对于插入排序算法来说,它是一种比较排序的一种。以后的博文中我会陆续介绍其余的几种排序算法。
时间复杂度O(n^2)
,
空间复杂度O(1)
排序时间与输入有关:输入的元素个数;元素已排序的程度。
最佳情况,输入数组是已经排好序的数组,运行时间是n
的线性函数;
最坏情况,输入数组是逆序,运行时间是n
的二次函数。
核心代码:
void insertionSort(int a[]){
int temp;
for(int i = 1; i<a.length; i++){
for(int j = i-1; j>=0; j--){
if( a[j+1] < a[j] ){
temp = a[j+1];
a[j+1] = a[j];
a[j] = temp;
}
}
}
}