插入排序—直接插入排序(Straight Insertion Sort)

/**
 * 
 * <p>@MethodName : insertSort</p>
 * <p>@Description: 直接插入排序</p>
 * @date          : 2016年7月19日 ,下午3:05:31  
 * @param         : @param A  
 * @Version       : vx.x
 */
public static void insertSort(int[] A){
    for(int i=1;i<A.length;i++){ 
        //从1开始表示:假设A[0] 已经放好位置了,后面的数字就是插入到它左边还是右边的问题。

        if(A[i] < A[i-1]){ //发现A[i]比前面的有序数组的最后一个数小了

            int tmp = A[i];//缓存下A[i]
            int j;
            for(j=i-1; j>=0 && A[j] > tmp; j--){ //从后往前逐个排查哪个位置刚好适合A[i],最后一次j--可能会为负值,这是为了配合后面A[j+1]
                A[j+1] = A[j];
            }
            A[j+1] = tmp;
        }

    }
}

 

如果引用本站的原创文章,请注明原文链接:,本站保留追究责任的权利!

发表评论