7-8 排序 (25 分)
给定N个(长整型范围内的)整数,要求输出从小到大排序后的结果。
本题旨在测试各种不同的排序算法在各种数据情况下的表现。各组测试数据特点如下:
数据1:只有1个元素;
数据2:11个不相同的整数,测试基本正确性;
数据3:103个随机整数;
数据4:104个随机整数;
数据5:105个随机整数;
数据6:105个顺序整数;
数据7:105个逆序整数;
数据8:105个基本有序的整数;
数据9:105个随机正整数,每个数字不超过1000。
输入格式:
输入第一行给出正整数N(≤105),随后一行给出N个(长整型范围内的)整数,其间以空格分隔。
输出格式:
在一行中输出从小到大排序后的结果,数字间以1个空格分隔,行末不得有多余空格。
输入样例:
11
4 981 10 -17 0 -20 29 50 8 43 -5
输出样例:
-20 -17 -5 0 4 8 10 29 43 50 981
上代码:
#include<bits/stdc++.h>
using namespace std;
void paixu(int *arr,int left,int right)
{
if(left>=right)return;
int l=left;
int r=right;
int key=arr[left];
while(left<right)
{
while(left<right&&arr[right]>=key)
{right--;}
arr[left]=arr[right];
while(left<right&&arr[left]<=key)
{left++;}
arr[right]=arr[left];
}
arr[left]=key;
paixu(arr,l,left-1);
paixu(arr,left+1,r);
}
int main()
{
int N;
cin>>N;
int a[N];
for(int i=0;i<N;i++)
{
cin>>a[i];
}
int left=0;
int right=N-1;
paixu(a,left,right);
for(int i=0;i<N-1;i++)
{
cout<<a[i]<<\" \";
}
cout<<a[N-1]<<endl;
return 0;
}
继续阅读与本文标签相同的文章
-
特斯拉自动驾驶系统涨价遭质疑 马斯克:我们不能一直亏钱
2026-05-14栏目: 教程
-
首个二类资源区平价光伏电站正式并网发电
2026-05-14栏目: 教程
-
AI+5G科技创新 视频行业呈现轻应用化趋势
2026-05-14栏目: 教程
-
1.98亿滴滴用户添加了紧急联系人 每天百万个订单行程分享给亲友
2026-05-14栏目: 教程
-
工程院院士刘韵洁:5G前景很大,但主要是行业应用
2026-05-14栏目: 教程
