排序算法------插入排序
插入排序原理:假设给数组Array排序 ,从第二个元素开始排序,就假定的条件是待排序的数字的前面所有的元素已经有序!如从第二个元素开始,前面的一个元素一定是有序的。如果第一个元素比第二个元素大,将一后移。借用算法导论书上的图
第一次从第二个元素开始,
到给下标是N的元素排序的时候,[0....N-1]的元素已经是有序的,这个时候,是从N-1的下标开始比较,如果N-1大于N,就将N-1后移。然后继续比较
N-2和N元素的大小,如果还是大于N,N-2后移,到一个不大于N的元素的时候,直接将N的数组赋给改元素的后一个元素。
java代码如下
public static void insertSort(int [] arr) { for(int i=2;i<arr.length;i++) { int temp = arr[i]; int k = i-1; while(k>=0 && arr[k]>temp) { arr[k+1]=arr[k]; k--; } arr[k+1]=temp; } }
从上面可以看出改算法的时间复杂度为O(n*n)
浙公网安备 33010602011771号