一、插入排序算法介绍
插入排序是一个非常好用而且简单的算法,是一个稳定的算法。
排序算法,顾名思义就是由插入而使得数列变成有序的: 依次把数字加入到有序的数列中去,直到全部加入完毕。可以比喻成打牌的时候手上的牌是有序的,继续摸牌插入到手中有序的牌中,最后摸完牌手中的牌就成了有序的了,就这么简单。
显然它的时间复杂度是O(n^2)。
当数列是有序的时候复杂度只有o(n),数据完全逆序则是最差的时候,时间复杂度是O(n^2).
下面是演示图
二、Java代码实现
public class InsertSort {
public static void main(String[] args) {
int[] a = {5,4,3,2,1};
insertSort(a);
for (int i : a) {
System.out.print(i + ",");
}
}
public static void insertSort(int[] a) {
for (int i = 1; i < a.length; i++) {
int key = a[i];
//insert into the index before a[i];
int j = i - 1;
while (j >= 0 && a[j] > key) {
a[j + 1] = a[j];
j--;
}
a[j + 1] = key;
}
}
}