直接插入排序

来源:互联网 发布:编程猫 李天驰 编辑:程序博客网 时间:2024/05/23 12:28
//直接插入排序    private static void insertSort(int a[], int n) {        int j, k;        for (int i = 1; i < n; i++) {            for (j = i - 1; j >= 0; j--) {                if (a[j] < a[i]) {                    break;                }            }            if (j != i - 1) {                int temp = a[i];                for (k = i - 1; k < j; k--) {                    a[k + 1] = a[k];                }                a[k + 1] = temp;            }        }    }

基本思想是基于a[i]往前遍历,找出a[0]~a[i-1]中比a[i]小的数,将a[i]插入到那个数后面。
时间复杂度:最好情况是O(n),最坏情况是O(n^2),平均时间复杂度为O(n^2)
空间复杂度:O(1)
在大部分已排序好的情况下较简单,该算法比较稳定。

原创粉丝点击