思路:直接插进去就完事了
choucha~~~~~~~~~
题目:用插入排序对一组数据排序。
问题描述:
输入一个长度为n(3<n<100)的整数数组,实现用插入排序对数组中的元素排序,并输出前三趟排序后的数据。
输入格式:
首先输入串的长度n,然后输入整数数组n.
输出格式:
在三行上输出前三趟插入排序后的数组。
样例输入:
8
17 46 32 87 58 9 50 38
样例输出:
17 46 32 87 58 9 50 38
17 32 46 87 58 9 50 38
17 32 46 87 58 9 50 38
#include<iostream>
#define MAXSIZE 100
using namespace std;
int count = 0;
void insert(int num[], int n) {
if (n < 2) {
return;
}
for (int i = 1; i < n; i++) {
int key = num[i];
//防止插入的数字最小~~
bool flag = false;
//倒序遍历
for (int j = i - 1; j > -1; j--) {
if (key < num[j]) {
num[j + 1] = num[j]; //右移
} else {
num[j + 1] = key;
flag = true;
break;
}
}
if (!flag) { //如果最小
num[0] = key;
}
if (i > 0 && i < 4) {
for (int i = 0; i < n; i++) {
cout << num[i] << ' ';
}
cout << '\n';
}
}
}
int main() {
int n;
cin >> n;
int num[MAXSIZE] = {0};
for (int i = 0; i < n; i++) {
cin >> num[i];
}
insert(num, n);
// for (int i = 0; i < n; i++) {
// cout << num[i] << ' ';
// }
return 0;
}