1265 蓝桥杯 排序 简单

1265 蓝桥杯 排序 简单

cpp 复制代码
//C++风格解法1,sort正序排序,正、逆序分别输出,通过率100%
#include <bits/stdc++.h>
using namespace std;

const int N = 5e5 + 10;
int a[N];

int main(){
  int n;cin >> n;
  for(int i = 1; i <= n; ++i)cin >> a[i];

  sort(a + 1, a + 1 + n);    //快速排序平均时间复杂度O(nlogn),范围左闭右开

  for(int i = 1; i <= n; ++i)cout << a[i] << " \n"[i == n]; 
  //" \n"[i == n] i != n时输出空格,否则输出换行符

  for(int i = n; i >= 1; --i)cout << a[i] << " \n"[i == 1];
  // " \n"[i == 1] 判断是否为最后一个元素,是换行,否空格
  return 0;
}
cpp 复制代码
//C++风格解法2,lambda表达式,正序快排,逆序快排,通过率100%
#include <bits/stdc++.h>
using namespace std;

const int N = 5e5 + 10;
int a[N];

int main(){
  int n;cin >> n;
  for(int i = 1; i <= n; ++i)cin >> a[i];

  sort(a + 1, a + 1 + n);

  for(int i = 1; i <= n; ++i)cout << a[i] << " \n"[i == n];
  
  sort(a + 1, a + 1 + n, [](const int &u, const int &v){return u > v;});
  //sort(a + 1, a + 1 + n, cmp) lambda表达式写法
  for(int i = 1; i <= n; ++i)cout << a[i] << " \n"[i == n];
  
  return 0;
}

Lambda表达式可以嵌套使用,ISO C++14支持基于类型推断的泛型lambda表达式:

cpp 复制代码
sort( a, a+n, [](const auto& a,const auto& b){return a>b;} );//降序排序:不依赖a和b的具体类型

|-----------|-----------|
| 捕捉形式:\[\] | 不捕获任何外部变量 |

auto:变量的自动类型推断

cpp 复制代码
//C++风格解法3,自定义函数编写排序规则,通过率100%
#include <bits/stdc++.h>
using namespace std;

const int N = 5e5 + 10;
int a[N];

bool cmp(const int &u, const int &v){return u > v;}    
//函数体写在{}里,自定义函数编写排序规则

int main(){
  int n;cin >> n;
  for(int i = 1; i <= n; ++i)cin >> a[i];

  sort(a + 1, a + 1 + n);

  for(int i = 1; i <= n; ++i)cout << a[i] << " ";
  cout << "\n";
  
  sort(a + 1, a + 1 + n,cmp);

  for(int i = 1; i <= n; ++i)cout << a[i] << " \n"[i == n];
  
  return 0;
}

reference:

sort入门_sort(a+1,a+n+1)-CSDN博客

八大排序算法的稳定性和事件复杂度 - tuna- - 博客园 (cnblogs.com)

c++中cout << ai << " \n"i == n - 1;该怎么解释 - CSDN文库

cout <<"\n"i == n- 1;是如何工作的?-腾讯云开发者社区-腾讯云 (tencent.com)

lambda 表达式------匿名函数 auto i= () { };_lamda表达式auto-CSDN博客
C++14 Overview, C++ FAQ (isocpp.org)
C++ auto用法及应用详解_c++ auto&-CSDN博客

函数 - C 语言教程 - 网道 (wangdoc.com)

c++应用sort函数时的cmp函数怎么写_c语言中cmp-CSDN博客

相关推荐
qz_Serene21 分钟前
C++:类和对象(上)
开发语言·c++
luj_17681 小时前
塔防牌:策略与卡牌的智慧碰撞
服务器·c语言·开发语言·经验分享·算法
wuyk5551 小时前
3.链表:用指针串联的动态数据结构
c语言·开发语言·数据结构·链表
郝学胜-神的一滴2 小时前
干货版《算法导论》17:二叉树核心原理、遍历逻辑与高阶实操全解
数据结构·c++·python·算法·计算机·编程
爱编程的小新☆2 小时前
【LeetCode】从递归到 Flood Fill:5 道题吃透 DFS 的选择、回溯与标记
java·算法·leetcode·深度优先·回溯·flood fill
Water_Sunzhipeng2 小时前
2024牛客暑期多校训练营1
算法
hetao17338372 小时前
2026-08-09~08-14 hetao1733837 的刷题记录
c++·算法
技术小黑2 小时前
RNN算法实战系列06 | LSTM 实现糖尿病探索与预测
rnn·算法·lstm
疯狂打码的少年2 小时前
【数据结构】二叉树的性质(五大性质+计算)
数据结构·笔记·算法
wabs6663 小时前
关于图论【A*算法 | 卡码网127.骑士的攻击的思考】
数据结构·算法·图论·卡码网·广搜的改进版