- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我有一项家庭作业要求我:
Write a method
sort(int[] arr)
that takes an integer array and uses a method from a previous exercise to determine if the array is sorted in increasing order or not. If it is already sorted, it should return the array, if it is not, the method should sort the array before returning it.
我的问题是我不知道应该如何处理这个作业?我应该修改以前的方法,在新方法中调用它还是可以在方法中创建一个方法?这是我之前写的方法:
public static void isSorted(int[] checkArray) {
boolean isSorted = true;
for (int i = 1; i < checkArray.length; i++) {
if (checkArray[i - 1] > checkArray[i]) {
isSorted = false;
提前致谢
最佳答案
为了让您真正学到一些东西,这是我的解决方案:
public int[] sort(int[] arr) {
if (!isSorted(arr))
Arrays.sort(arr);
return arr;
}
Here是 Arrays.sort
这不仅更简洁,而且就地排序。这意味着它不会复制您传入的数组,执行工作,然后返回副本,它只是在原始数组上执行工作。这使它稍微快一点,意味着它占用的额外空间最少。当您的输入大小为 10 时没什么大不了的,但是当您达到 1000 万时。另外,请注意赋值的措辞:如果它已经排序,它应该返回数组,如果不是,该方法应该在返回之前对数组进行排序。
从技术上讲,返回一个 原始数组的副本不是作业想要的。它想要原件。
因此它简短、干净、快速且内存效率高。一定不错吧?
不,因为它有一个巨大的缺陷。它打破了方法的隐含契约。一个改变参数的函数不应该返回任何东西,一个返回某些东西的函数不应该修改它的参数。这是软件工程的基本原则(Arrays.sort 演示了这一原则)。违反此规定会给那些认为您有能力并且不会违反此规定的人带来巨大的麻烦。
如果我们按照规则,sort
应该是这样的:
public void sort(int[] arr) {
if (!isSorted(arr))
Arrays.sort(arr);
}
所以告诉你的老师你在互联网上遇到的一只装甲仓鼠说不要再教你糟糕的界面设计了。
关于java - 方法中的方法(家庭作业),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26128370/
我的家庭作业有问题。我不要求任何代码。我所要求的只是关于如何实现作业的某些部分的一些建议。 分配如下:N 名玩家(n 由用户指定)和一个带有字母的“框”(A-Z,未指定字母数或如问题中所述:无限制)。
我需要能够在不使用任何外部java函数或库的情况下执行1938757289258398239399949292934/14583949053930202。我将号码的每个数字存储在一个链接列表中。我还可
很难说出这里问的是什么。这个问题是含糊的、模糊的、不完整的、过于宽泛的或修辞性的,无法以目前的形式得到合理的回答。如需帮助澄清此问题以便重新打开它,visit the help center 。 已关
大家好,我还有另一个作业问题。我必须编写一个客户端和一个服务器程序,以便服务器(具有共享内存和信号量)可以与客户端进行通信。客户端从标准输入获取数据并将其发送到服务器,服务器对其进行排序并将其发送回。
目前它将构建并运行。但我的问题是,当我尝试调用指针函数时,它不会打印出主函数中的第一个打印语句。我的最终目标是让它像 f() 从 1-36 的值表一样打印。在这几行代码中使用 & 和 * 是家庭作业的
我已将我的数组大小设置为 20(假设它计数为 0,我将其设置为 19)。我将 for 循环设置为仅在 gradeCount using namespace std; //Variables ////
我有一个 C++ 作业要在接下来的几周内完成。任务是 读取一行包含 0 到 89 之间的 3 个分数的输入,并从同一行读取一个名字。 将这些分数转换为分数,并根据每个学生的分数给他们打分。 我的第一次
我的代码中不断出现这 2 个错误 In function 'int main()':error: invalid initialization of non-const reference of ty
我正在尝试学习在 Backtrack Linux 上利用简单的缓冲流技术。 这是我的C程序 #include #include int main(int argc, char **argv) {
使用 Python,如何在给定起始行号和结束行号的情况下打印文本文件的行? 我想出了一个函数,但这行不通。 def printPart(src, des, varFile): returnLi
...所以我修复了一下,但它现在说...加速测试:程序跨越时间限制...持续时间:5 秒!(限制 8 秒)!...如果有人有任何想法,这是我的代码...... #ifndef __PROGTEST__
所以基本上我在这个作业中遇到问题 5,http://www.student.cs.uwaterloo.ca/~cs136/assignments/a5/ 我们基本上给出了类似于 Scheme 列表函数
好吧,我正在编写一个程序,它将运行通过网格并找到腔室。对于每个白色的腔室,它都填充一种颜色。只要该点旁边的空白区域也是白色,它就会继续填充颜色,直到该区域被墙隔开。然后它继续扫描,直到找到一个新的白色
我的作业涉及 Big O 分析,我想我已经掌握了它,但我不是 100% 确定。你们这些可爱的人介意看一看并告诉我我是否在正确的轨道上吗? 作业如下。对于问题1和3,我的分析和答案在右边,在//标记之后
我有一项家庭作业要求我: Write a method sort(int[] arr) that takes an integer array and uses a method from a pre
我正在尝试学习在 Backtrack Linux 上利用简单的缓冲流技术。 这是我的C程序 #include #include int main(int argc, char **argv) {
我得到一个 Char 数组,必须将其转换为 Moves(如下所示) data Move = N | S | W | E | X newtype Moves = Moves [Move] createM
这是作业逐字记录: 1.) Write a Java program that is a TCP server that returns a HTTP response to a browser th
我需要验证我的表单信息并发送确认页面。 这是我尝试过的方法,但没有用。有没有办法将两者结合起来? 这验证所有字段都已填写: 这指向确认页面: 最佳答
我正在尝试使用 FlowLayout 创建一个内部插入了两个 JPanel 的 JFrame。我在一个单独的文件中初始化了框架,但这是我被调用的内容 public class FlowInFlow e
我是一名优秀的程序员,十分优秀!