实现
- 思路
- 先将序列的第1个记录看成是一个有序的子序列,然后从第2个记录逐个进行插入,直至整个序列有序为止。
- 实现
void insert_sort(int a[], int n){
if ( n < 2) {
return;
}
for(int i = 1; i < n; ++i){
if (a[i] < a[i-1]){
int j = i - 1;
int val = a[i];
while((j >= 0) && (a[j] > val)){
a[j + 1] = a[j];
--j;
}
a[j + 1] = val;
}
print(a, n, i);
}
}
测试
- 代码
#include <iostream>
using namespace std;
void print (int a[], int num, int index) {
cout << index << " : ";
for (int i= 0; i < num; ++i) {
cout << a[i] << " ";
}
cout << endl;
}
int main() {
int a[] = {7,6,5,4,3,2,1};
insert_sort(a, sizeof(a)/sizeof(a[0]));
cin.get();
return 0;
}
- 结果
1 : 6 7 5 4 3 2 1
2 : 5 6 7 4 3 2 1
3 : 4 5 6 7 3 2 1
4 : 3 4 5 6 7 2 1
5 : 2 3 4 5 6 7 1
6 : 1 2 3 4 5 6 7