简单的插入排序

Har*_*ara 1 java sorting insertion-sort

我写了一个简单的插入排序程序,但输出不正确.

class InsertionSort{
    public static void main(String h[]){
    int[] a = {5,4,3,2,1};
    int i,j,temp;
        for(i=1;i<a.length;i++){
            j = i-1; 
            while(i>0 && a[j] > a[i]){
                temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
        for(int x=0; x<a.length;x++){
            System.out.println(a[x]);   
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

phi*_*pxy 8

在外部循环的顶部,数组在元素下面排序i.您不想向i下移回阵列.在内部循环中j,i通过反复切换下一个向下的方式,将从下开始的新元素移动到已排序的数组中.

for (i = 1; i < a.length; i++){
    for (j = i; j > 0 && a[j-1] > a[j]; j--){
        temp = a[j];
        a[j] = a[j-1];
        a[j-1] = temp;
    }
}
Run Code Online (Sandbox Code Playgroud)