C++排序的两种方式

举报
zstar 发表于 2022/08/06 01:31:20 2022/08/06
【摘要】 问题 输入: 第一行输入n,第二行输入n个数据。 输出: n个数据从小到大排 例如: 输入: 3 9 2 6 输出: 2 6 9 手动排序 手动排序有很多种算法,这里以比较容易理解的选择排序为...

问题

输入:
第一行输入n,第二行输入n个数据。

输出:
n个数据从小到大排

例如:
输入:
3
9 2 6

输出:
2 6 9

手动排序

手动排序有很多种算法,这里以比较容易理解的选择排序为例:

#include <iostream>
using namespace std;

int main()
{
    int num;
    int a[10];
    cin >> num;
    for (int i = 0; i < num; i++)
    {
        cin >> a[i];
    }

    for (int i = 0; i < num; i++)
    {
        for (int j = i + 1; j < num; j++)
        {
            if (a[i] > a[j])
            {
                int temp = a[i];
                a[i] = a[j];
                a[j] = temp;
            }
        }
    }
    
    for (int i = 0; i < num; i++)
    {
        cout << a[i] << " ";
    }
    return 0;
}

  
 

使用STL排序

STL即标准模板库,它提供了sort这个接口可以快速排序。这里容器选择vector,即单向数组。

#include <iostream>
#include <vector>
#include <algorithm>
using namespace std;

void myprint(int v)
{
    cout << v << " ";
}
int main()
{
    int num;
    int k;
    vector<int> a;
    cin >> num;
    while (num--)
    {
        cin >> k;
        a.push_back(k);
    }
    sort(a.begin(), a.end());
    for_each(a.begin(), a.end(), myprint);

    return 0;
}

  
 

拓展:从大到小排

修改sort语句,多加greater<int>()即可。

sort(a.begin(), a.end(), greater<int>());

  
 

文章来源: zstar.blog.csdn.net,作者:zstar-_,版权归原作者所有,如需转载,请联系作者。

原文链接:zstar.blog.csdn.net/article/details/121528319

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。