插入排序-直接插入排序

来源:互联网 发布:冰箱离墙距离 知乎 编辑:程序博客网 时间:2024/05/16 10:05

1、概念

直接插入排序:每次将一个待排序的记录,按其关键字大小插入到前面已经排好序的子序列中的适当位置,直到全部记录插入完成为止。

直接插入排序

2、算法

public static void insertSort(int[] arr) {        int length = arr.length;        int j, temp;        //对整个数组进行检查        for (int i = 1; i < length; i++) {            temp = arr[i];            j = i - 1;            //当前数与之前已排序数比较,如果小则向前移位查找            while (j >= 0 && temp < arr[j]) {                arr[j + 1] = arr[j];                j--;            }            //找到位置并插入            arr[j + 1] = temp;            //输出结果过程            System.out.print(i + "times: ");            for (int k = 0; k < length; k++) {                System.out.print(arr[k] + "  ");            }            System.out.println();        }    }

结果:

source: 8  3  6  5  9  4  10  7  1  2 1times: 3  8  6  5  9  4  10  7  1  2  2times: 3  6  8  5  9  4  10  7  1  2  3times: 3  5  6  8  9  4  10  7  1  2  4times: 3  5  6  8  9  4  10  7  1  2  5times: 3  4  5  6  8  9  10  7  1  2  6times: 3  4  5  6  8  9  10  7  1  2  7times: 3  4  5  6  7  8  9  10  1  2  8times: 1  3  4  5  6  7  8  9  10  2  9times: 1  2  3  4  5  6  7  8  9  10 

如果碰见一个和插入元素相等的,那么插入元素把想插入的元素放在相等元素的后面。所以,相等元素的前后顺序没有改变,从原无序序列出去的顺序就是排好序后的顺序,所以插入排序是稳定的,其时间复杂度O(n^2)。

原创粉丝点击