如何更正插入排序?

时间:2013-05-16 14:36:48

标签: java arrays sorting loops insertion-sort

这是我的第一个插入数组,但它可能不排序,我不知道我哪里出错了。有什么想法吗?

  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");
        }

3 个答案:

答案 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;

对我来说很麻烦。您确定要在阵列中使用相同的元素两次吗?