插入排序

参考别人的文章记录下来,方便自己查看

插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。

算法步骤:

将待排序序列的<code>第一个元素</code>看做一个<code>有序序列</code>,把第二个元素到最后一个元素当成是<code>未排序序列</code>。

从头到尾依次扫描<code>未排序序列</code>,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)

    /**
     * 插入排序
     * @param a
     */
    public static void insertSort(int[] a) {
        //第一个元素作为有序序列;剩下的第二个元素到末尾元素为无序序列
        //从第二个元素扫描序列
        for(int i=1; i<a.length; i++) {
            int target = a[i]; //此次需移动的目标
            int j = i; //j是最终target移动到的位置
            //target与有序序列比较,找到适合的位置j;同时将比target大的
            while(j>0 && target < a[j-1]) {
                a[j] = a[j-1]; //比target大的有序序列数据右移
                j--; //target小于有序序列的数据时,j左移
            }
            //插入 
            a[j] = target; //在位置j上赋值target
        }
    }   

推荐阅读更多精彩内容