排序算法------插入排序

插入排序原理:假设给数组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)

 

posted @ 2012-06-20 21:56  hadooper  阅读(84)  评论(0)    收藏  举报