直接插入排序的算法的思想 就是将一个待排序的值插入到一个有序序列中去,插入的时候是从后向前插入
最差时间复杂度:O(n^2)
最优时间复杂度:O(n)
平均时间复杂度:O(n^2)
稳定性:稳定
实例:
//从小到大排序
void insertSort1(int *a,int n){
for(int i=1; i<n; i++){
//如果前一个数大于后一个数则进行排序,否则不需要
if(a[i-1] > a[i]){
//进行查找
int index = 0;
//从排好序的队列中查找比插入的值要大的位置
for(int j=0;j<i; j++){
if(a[j] > a[i]){
index = j;
break;
}
}
//进行插入
int tmp = a[i];//保存待插入的值
for(int j=i;j>index;j++){
a[j]=a[j-1];
}
a[index] =tmp;
}
}
}