插入排序的基本思想就是从第2个元素开始不停的与前面的已经排好序的数组进行比较,找到这个数应该插入的位置。如下图所示,其中绿色部分为已排序部分。

具体实现过程如下:

public class Test6 {

    public static void sort(int a[]){
        int temp;
        for(int i=1;i<a.length;i++){
            //待排序元素和有序数组的最后一个进行比较
            if(a[i]<a[i-1]) {
                temp=a[i];
                for (int j = i; j >=0; j--) {
                    if (j>0&&temp<a[j - 1]) {
                        a[j] = a[j - 1];
                    } else {
                        a[j] = temp;
                        break;//找到插入位置插入元素并终止内循环
                    }
                }
            }
        }
    }

    public static void printArray(int a[]){
        for(int i=0;i<a.length;i++){
            System.out.print(a[i]+" ");
        }
    }

    public static void main(String[] args){
        int[] a={2,1,6,7,8,9,1,2,678,345,234,3452323,1,1,2,0};
        sort(a);
        printArray(a);
    }
}

运行结果:

12-28 00:30
查看更多