插入排序基本思想:
将一个记录插入到已排好序的有序表中,从而得到一个新的,记录数增1的有序表。
插入排序的思想就像我们平时打扑克牌一样,刚开始的时候我们手里没有牌,所有的牌都扣在桌子上。然后我们每次从桌子上抓起一张牌插入手里已排好序的牌中。为了给刚抓起的牌找到合适的位置,我们需要那这张牌和手里的牌一一比较。任何时候我们手里的牌都是有序的。
插入排序复杂度:
空间:需要一个记录的辅助空间
时间:最差和平均都是O(n2),最好是O(n)
直接插入排序的算法简介,容易实现。如果需要排序的数量很小(<1000),那么插入排序还是不错的选择。但是插入排序不适合数量比较大的排序应用。
插入排序时稳定的排序。
JAVA实现的插入排序:
public class InsertionSort {
public static void insertionSort(int[] source) {
int i,j,temp;
for(i=1; i<source.length;i++) {
if(source[i] < source[i-1]) {
temp = source[i];
source[i] = source[i-1];
for(j=i-2; (j>=0) && (source[j]>temp); j--){
source[j+1]=source[j];
}
source[j+1]=temp;
}
}
}
//测试insertionSort
public static void main(String[] args) {
int test[] = {49,38,65,97,76,13,27,3,24,99};
insertionSort(test);
for(int i=0; i<test.length;i++) {
System.out.println(test[i]);
}
}
}