【发布时间】:2015-10-01 23:02:26
【问题描述】:
我正在尝试将两个 int 数组按升序排序到一个新的 int 数组中。
我是这样写的,它对除 textArr 中的最后一个元素之外的所有内容进行了排序,我不知道为什么......
int i=0, j=0, k=0;
while(i < textArr.length && j < binaryArr.length) {
if(textArr[i] < binaryArr[j]) {
mergeArr[k] = textArr[i];
i++;
}
else {
mergeArr[k] = binaryArr[j];
j++;
}
k++;
}
我环顾四周,找到了一个添加两个新 while 循环的解决方案,但老实说,我不知道后两个 while 循环在做什么。我还想知道这是否是将两个数组排序为第三个排序数组的最有效方法?感谢您的帮助,我对 java 很陌生,想正确学习,显然我想要来了解我实际上在写什么!
int i=0, j=0, k=0;
while(i < textArr.length && j < binaryArr.length) {
if(textArr[i] < binaryArr[j]) {
mergeArr[k] = textArr[i];
i++;
}
else {
mergeArr[k] = binaryArr[j];
j++;
}
k++;
}
while(i < textArr.length) {
mergeArr[k] = textArr[i];
i++;
k++;
}
【问题讨论】:
-
这叫做合并。
-
我只是不明白最后两个 while 循环到底在做什么。
-
查看正在发生的事情的最佳方法是使用调试器逐步执行算法。
-
根据你在下面所说的 Paul,我现在明白了,谢谢!如果你把你的答案放在一个答案中,我会把它排除在外。老实说,老实说,我不明白调试器是如何工作的。我通常会在线访问 Java Visualizer,甚至没有考虑过这一点。我也想看看这是否也是最好的方法。另外,如果你有时间,我在下面的评论中有一个超级快速的问题。
标签: java arrays performance sorting