排序—插入排序

2019-03-02  本文已影响0人  Simple_a

选择排序

思路:

直接插入排序是一种最简单的排序方法,它的基本操作是将一个记录插入到已排好的有序的表中,从而得到一个新的、数量增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;
        }
    }
}
上一篇 下一篇

猜你喜欢

热点阅读