插入排序
Question1
输入:$n$个数的一个序列$<a_1,a_2,...,a_n>$。
输出:输入序列从小到大的排列。
输入样例:
INSERTION-SORT.in
7
5 7 5 9 65 9 1
输出样例:
INSERTION-SORT.out
1 5 5 7 9 9 65
本题使用插入排序来解决。
插入排序是一种对于少量元素的排序的有效算法。
它的工作方式就如同扑克牌的排序。
想象一下,一开始,我们的左手为空,所有的扑克牌(需要排序的数)都反面朝上放在桌子上。接下来,我们每次都从桌子上拿走一张牌,将其插入我们左手的正确位置中。而为了能将其插入正确位置(从小到大),我们需要将其与原来左手中的牌进行比较。
对于本题而言,代码如下。
INSERTION-SORT.cpp
#include<bits/stdc++.h>
using namespace std;
int main()
{
freopen("INSERTION-SORT.in","r",stdin);
freopen("INSERTION-SORT.out","w",stdout);
int n,a[1024],time=0;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
for(int i=0;i<n;i++)
for(int j=i+1;j<n;j++)
if(a[j]<a[i]) swap(a[i],a[j]);
for(int i=0;i<n;i++)
cout<<a[i]<<' ';
return 0;
}
IA上在本节的后面还对伪代码做了说明,这里因为笔记全是C++代码,所以就不多说了。
下一篇文章,我们来分析一下插入排序。