最差时间复杂度 O(n^2);
最优时间复杂度 O(n);
平均时间复杂度:O(n^2)
稳定性:稳定
Insertion Sort: 通过构建有序序列,对未排序的数据,在已排序序列中从后往前扫描,找到合适的位置插入
插入排序算法的一般步骤:
1、从第一个元素开始,该元素被认为已被排序
2、取出下一个元素,在已排序的序列中从后往前扫描
3、如果该元素大于新元素,将该元素移到下一个位置
4、重复步骤3,直到找到已排序的元素小于或者等于新元素的位置
5、将新元素插入后,重复2~5
实现代码
void InstertionSort(int a[], int length)
{
for (int j=1;j<length;j++)
{
int key = a[j];
int i=j-1;
while(i>0&a[i]>key)
{
a[i+1] = a[i];
i--;
}
a[i+1]= key;
}
}