排序算法之插入排序 Insert Sort
插入排序是简单的说,就是遍历整个数组,每次将一个元素插入到已排序的数组中,直到插入最后一个元素即完成整个排序过程。
基本思想
- 将开头第一个元素视作已排序部分,后续元素视作未排序部分
- 对未排序部分执行一下操作,直到未排序部分被消除
- 取出未排序部分开头第一个元素作为待排序元素t
- 将t与已排序部分进行对比,将比t顺序大的元素往后移动一个,即确定排序位置
- 将待排序元素t插入空出的排序位置中
#include <stdio.h>
int main(){
int a[10],i,j;
for(i=0;i<10;i++){scanf("%d", &a[i]);}
for (i=1;i<10;i++){
int t = a[i]; // 待排序元素
j = i-1;
while(j>=0 && a[j] > t){
a[j+1] = a[j]; // 往后移动一个
j--;
}
a[j+1] = t; // 插入
}
for(i=0; i<10;i++){
printf("%d ", a[i]);
}
}
插入排序算法最坏的情况时间复杂度也是O(n^2)