DS内排—直插排序
题目描述
∗ ∗ 给定一组数据,使用直插排序完成数据的升序排序。 ∗ ∗ **给定一组数据,使用直插排序完成数据的升序排序。** ∗∗给定一组数据,使用直插排序完成数据的升序排序。∗∗
–程序要求–
若使用C++只能include一个头文件iostream;若使用C语言只能include一个头文件stdio
程序中若include多过一个头文件,不看代码,作0分处理
不允许使用第三方对象或函数实现本题的要求
输入
数据个数 n n n, n 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 insertionSort(int arr[], int n) {
for (int i = 1; i < n; ++i) {
int key = arr[i];
int j = i - 1;
while (j >= 0 && arr[j] > key) {
arr[j + 1] = arr[j];
--j;
}
arr[j + 1] = key;
for (int k = 0; k < n; ++k) {
cout << arr[k];
if (k < n - 1) {
cout << " ";
}
}
cout << endl;
}
}
int main() {
int n;
cin >> n;
int data[n];
for (int i = 0; i < n; ++i) {
cin >> data[i];
}
insertionSort(data, n);
return 0;
}