插入排序

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++代码,所以就不多说了。

下一篇文章,我们来分析一下插入排序

posted @ 2022-01-10 23:08  himekawa  阅读(31)  评论(0编辑  收藏  举报