插入排序实现(java语言实现):
public static <AnyType extends Comparable<? super AnyType>> void insertionSort(AnyType[] a){
int j;
for(int p=1;p<a.length;p++){
AnyType tmp = a[p];
for(j=p;j>0&&tmp.compareTo(a[j-1])<0;j--){
a[j]=a[j-1];
}
a[j]=tmp;
}
}
插入排序分析:
因为此排序,内层for循环的检测总是立即判定不成立而终止,所以如果输入数据几乎被排序了,那么插入排序算法运行很快,如果是已经排列好了的数,插入排序以线性时间运行
精确计算:从上面内循环中元素比较次数可以看出对于p的每个值最多p次,对所有p求和1+2+3+...+N =O(N²)
插入排序的时间复杂度为O(N²),平均时间复杂度也是O(N²)