题型归类-排序汇总
题目描述:
KY210 排序
描述
对输入的n个数进行排序并输出。
输入描述:
输入的第一行包括一个整数n(1<=n<=100)。 接下来的一行包括n个整数。
输出描述:
可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。 每组测试数据的结果占一行。
输入:
4
1 4 3 2
输出:
1 2 3 4
STL sort排序
知识点总结:
- sort()函数
· 升序 sort(arr, arr + n) 或 sort(arr, arr + n, less())
· 降序 sort(arr, arr + n, greater())
注意:默认升序,根据数组的类型 更改<>里的数据类型!
#include <iostream>
#include <cstdio>
#include <algorithm>
using namespace std;
const int MAXN = 100;
int arr[MAXN];
int main()
{
int n;
while(scanf("%d", &n) != EOF) {
for(int i = 0; i < n; ++i) {
scanf("%d", &arr[i]);
}
sort(arr, arr + n); //sort 默认升序
// sort(arr, arr + n, greater<int>()); //降序
// sort(arr, arr + n, less<int>()); //升序
for(int i = 0; i < n; ++i) {
printf("%d ", arr[i]);
}
printf("\n");
}
return 0;
}
快排
知识点总结:
- 浮点数表示法
- 1e6 = 10^6 = 1000000
- 1e5 + 10 = 100000 + 10 = 100010
#include <iostream>
using namespace std;
const int MAXN = 1e6 + 10; //根据数据范围变动
int q[MAXN];
int n;
void quick_sort(int q[], int l, int r)
{
if(l >= r) return;
int i = l - 1, j = r + 1;
// int x = rand() % (r - l + 1) + l; //使用随机点 作为分界点
int x = q[l + r >> 1]; //使用中间点 作为分界点
while(i < j) {
do i ++; while (q[i] < x);
do j --; while (q[j] > x);
if(i < j) swap(q[i], q[j]);
}
quick_sort(q, l, j);
quick_sort(q, j + 1, r);
}
int main()
{
scanf("%d", &n);
for (int i = 0; i < n; ++ i) {
scanf("%d", &q[i]);
}
quick_sort(q, 0 , n-1);
for (int i = 0; i < n; ++ i) {
printf("%d ", q[i]);
}
return 0;
}
分类:
算法
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 从HTTP原因短语缺失研究HTTP/2和HTTP/3的设计差异
· 三行代码完成国际化适配,妙~啊~