insertion sort

从头开始的指针i,保证其左侧都是in order的,右侧都是not yet seen的。i++,若此数比i小,则与i交换,若还比起左边的小,则再与左边的交换……

public void insertionSort(int[] a){
    int N = a.length;
    for(int i=0;i=0;j--){
            if(a[j]

insertion sort的运行时间决定于输入的order,而不像selection order那样无所谓为nn/2。insertion sort平均 大概为nn/4,最好的情况是输入恰好in order,则只需进行n-1次比较,最坏的情况是输入的是倒序的,那么就需要n*n/2次比较和交换。
其实,insertion sort的时间复杂度和输入array中invertion的元素数量是呈线性关系的。

你可能感兴趣的:(insertion sort)