这是我的第一个插入数组,但它可能不排序,我不知道我哪里出错了。有什么想法吗?
for (int i=1; i<array.length; i++) {
int temp = array[i];
for (int j=i-1; j >=0 && temp < array[j]; j--) {
array[j+1] = array[j];
array[j+1] = temp;
}
ItsATextArea.append(array[i] + "\n");
}
答案 0 :(得分:1)
我认为你在这里犯了错误
array[j+1] = array[j];
array[j+1] = temp; // It must be array[j] = temp
答案 1 :(得分:1)
你几乎把它弄好了。 'array [j + 1] = temp;' line应该在循环之外。
for (int i=1; i<array.length; i++) {
int temp = array[i];
int j = i - 1;
for (; j >=0 && temp < array[j]; j--) {
array[j+1] = array[j];
}
array[j+1] = temp;
}
此外,如果您计划打印已排序的数组,请在算法完成后执行此操作。因为您无法确定插入的元素“temp”是否位于正确的位置,而是在您添加“append”-line的位置。例如,如果原始数组中的最后一个元素是最小的元素,则需要将所有元素向右移动。
答案 2 :(得分:0)
array[j+1] = array[j];
array[j+1] = temp;
对我来说很麻烦。您确定要在阵列中使用相同的元素两次吗?