美文网首页
插入排序

插入排序

作者: 七迁屋的馒头 | 来源:发表于2017-01-16 17:49 被阅读0次

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

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

    算法步骤:

    将待排序序列的<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
            }
        }   
    

    相关文章

      网友评论

          本文标题:插入排序

          本文链接:https://www.haomeiwen.com/subject/xerpbttx.html