插入排序(Insertion Sort)是一种简单直观的排序算法,实现原理为未排序数据在已排序序列中,从后向前扫描找到合适位置插入。
一个形象的案例,摸扑克牌的时候,手里的牌是已经排好序的,桌子上是未排序的,每次摸一颗,从后面开始比较大小,找到合适的位置插入,完成排序。
特点
插入排序所需的时间取决于输入中元素的初始顺序,如果一个很大且有序或者近似有序的数组要比散列的数组速度更快。
示例
代码
public class InsertionSort {
public static void main(String[] args) {
int[] a = {1,3,4,5,2,9,12,11,18,1,7,12,66};
for (int i = 1; i < a.length; i++) {
for (int j = i; j > 0 ; j--) {
if(a[j] < a[j-1])
{
int temp = a[j];
a[j] = a[j-1];
a[j-1] = temp;
}
}
}
for (int i = 0; i < a.length; i++) {
System.out.println(a[i]);
}
}
}