- 插入排序(C语言版):时间复杂度=O(n2),空间复杂度=O(1)
算法步骤:
-
将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一个元素当成是未排序序列。
-
从头到尾依次扫描未排序序列,将扫描到的每个元素插入有序序列的适当位置。(如果待插入的元素与有序序列中的某个元素相等,则将待插入元素插入到相等元素的后面。)。
算法演示:
代码:
![](https://i-blog.csdnimg.cn/blog_migrate/8f900a89c6347c561fdf2122f13be562.gif)
![](https://i-blog.csdnimg.cn/blog_migrate/961ddebeb323a10fe0623af514929fc1.gif)
1 void InsertSort(int *A ,int length){ 2 //遍历数组 3 for (int i = 1; i < length ; ++i) { 4 //遍历当前游标之前的数,并逐个比较大小做调换 5 for (int j = i; j > 0; j--) { 6 if(A[j-1] > A[j]) 7 swap(A+j-1,A+j); 8 else 9 break; 10 } 11 } 12 // Print(A,length); 13 }