排序—插入排序
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;
}
}
}