题目描述
给定一组数据,使用直插排序完成数据的升序排序。
–程序要求–
若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio
程序中若include多过一个头文件,不看代码,作0分处理
不允许使用第三方对象或函数实现本题的要求
输入
数据个数n,n个数据
输出
直插排序的每一趟排序结果
样例输入
7 34 23 677 2 1 453 3
样例输出
23 34 677 2 1 453 3
23 34 677 2 1 453 3
2 23 34 677 1 453 3
1 2 23 34 677 453 3
1 2 23 34 453 677 3
1 2 3 23 34 453 677
代码
#include <iostream>
using namespace std;
void InsertSort(int *a, int n) {
int i, j;
for (i = 2; i <= n; i++) {
if (a[i] < a[i - 1]) {
a[0] = a[i];
for (j = i - 1; a[0] < a[j]; --j)
a[j + 1] = a[j];
a[j + 1] = a[0];
}
for (int k = 1; k <= n; k++) {
if (k != n)
cout << a[k] << " ";
else
cout << a[k] << endl;
}
}
}
int main() {
int n;
cin >> n;
int *a = new int[n + 1];
for (int i = 1; i <= n; i++) {
cin >> a[i];
}
InsertSort(a, n);
delete[] a;
return 0;
}