美文网首页
排序—插入排序

排序—插入排序

作者: Simple_a | 来源:发表于2019-03-02 22:34 被阅读0次

    选择排序

    思路:

    直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的有序的表中,从而得到一个新的、数量增1的有序表。

    当前元素的前面元素均为有序,要插入时,从当前元素的左边开始往前找(从后往前找),比当前元素大的元素均往右移一个位置,最后把当前元素放在它应该呆的位置就行了。

    可以想象斗地主右手接牌插入左手已经整理好顺序的牌的情景,即将一个牌,从左->右比较,插入到合适位置。

    复杂度分析:

    时间复杂度为O(n^2)。是稳定的排序方法。

    package com.itstyle.seckill.common.algorithm;
    /**
     * 直接插入排序
     */
    public class InsertSort {
        /**
         * 直接插入排序算法
         */
        public static void insertSort(int[] list) {
            int len = list.length ;
            // 从无序序列中取出第一个元素 (注意无序序列是从第二个元素开始的)
            for (int i = 1; i < len; i++) {
                int temp = list[i];
                int j;
                // 遍历有序序列
                // 如果有序序列中的元素比临时元素大,则将有序序列中比临时元素大的元素依次后移
                for (j = i - 1; j >= 0 && list[j] > temp; j--) {
                    list[j + 1] = list[j];
                }
                // 将临时元素插入到腾出的位置中
                list[j + 1] = temp;
            }
        }
    }
    

    相关文章

      网友评论

          本文标题:排序—插入排序

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