算法思想:
- 将数据按照一定的顺序一个一个的插入到有序的表中,最终得到的序列就是已经排序好的数据。
- 简单插入排序的时间复杂度也是O(n^2)
举例:
4,2,3,1,5 ,其中4是当前的有序表,将2插入有序表,然后逐步将后面所有元素往前插入
第一次插入:2 4 3 1 5
第二次插入:2 3 4 1 5
第三次插入:1 2 3 4 5
第四次插入:1 2 3 4 5
代码:
1 void InsertSort(int*a, int n) { 2 for (int i = 1; i < n; i++) { 3 for (int j = i; j>0; j--) { 4 int tmp; 5 if (a[j] < a[j - 1]) { 6 tmp = a[j]; 7 a[j] = a[j-1]; 8 a[j - 1] = tmp; 9 } 10 } 11 } 12 }