经典排序算法之——插入排序
经典排序算法之——插入排序
时间复杂度:
最好:O(n)
最坏:O(n^2)
空间复杂度:
O(1)
什么时候选择插入排序:
1、n较小
2、在要排序的序列已经将顺序大致排好的时候,或者说每一个数都在他应该在的位置左右的时候用插入排序较好
图解:
代码:
#include <stdio.h> #define N 10 void my_csort(int *arr,int n) { //保存要插入的一个值。 int i,j,val; //将每一个值都依次取出按顺序插入。 for(i = 1;i<n;i++) { val = arr[i]; //i指向要插入的j指向i右边要比较的。 j = i-1; //当走到最开始则退出,当走到比自己小的位置退出。 while(j>=0 && arr[j]>val) { //如果比自己大大的数后移,把空位让出来。 arr[j+1] = arr[j]; //继续走。 j--; } arr[j+1] = val; } } int main(void) { int a[N] = {1,4,7,8,5,2,3,6,9,0}; my_csort(a,N); for(int i = 0;i<N;i++) printf("%d\t",a[i]); printf("\n"); return 0; }