排序是C++中常见的事情,常见的排序方法有冒泡排序,桶排序,插入排序,快排等,详细关于排序的视频可以看看这个网址:
一、思想
回想一下打牌时的情景,是不是一边抓牌一遍把牌插到合适的地方呢?当抓完牌后,手中的牌是不是也就变得有序了呢?这就是插入排序的核心!!!
二、思路
当读入一个数字时,在已经排好的序列中,找到它的正确位置,然后再放入。但要注意的是在插入这个元素之前,需要把他后面所有的元素都后移一位,以保证当前元素的位置上的原元素不被覆盖
例如:设n=5,数组a中的5个元素分别是98,23,34,12,38,则执行后的变动情况如下:
第0步:[98] 23 34 12 38
第1步:[23 98] 34 12 38
第2步:[23 34 98] 12 38
第3步:[12 23 34 98] 38
第4步:[12 23 34 38 98]
三、程序如下:
#include <bits/stdc++.h>
using namespace std;int main() {
int n;
cin >> n;
int a[n];
int len = n;
for (int i = 0; i < n; i++) {
cin >> a[i];
}//录入
for (int i = 1; i < len; i++) {
int key = a[i];//储存当前值
int j = i - 1;
while ((j >= 0) && (key < a[j])) {
a[j + 1] = a[j];
j--;
}//向后移动
a[j + 1] = key;//赋值
}
for (int i = 0; i < len; i++) {
cout << a[i] << " ";
}return 0;
}