快速排序
利用快速排序算法将读入的 NN 个数从小到大排序后输出,请勿使用std::sort。
输入格式
第一行一个整数 n (1≤n≤105)n (1≤n≤105)。
第二行 nn 个整数 ai (1≤ai≤109)ai (1≤ai≤109)。
输出格式
输出一行,为 aiai 排序后的结果。
Sample Input
5 4 7 1 4 6
Sample Output
1 4 4 6 7
#include<stdio.h>
#include<iostream>
using namespace std;
int a[110000];
void ksp(int x,int y)
{
int i,j,k,t;
if(x>y)
return ;
t=a[x];
i=x;
j=y;
while(i!=j)
{
while(a[j]>=t && i<j)
j--;
while(a[i]<=t && i<j)
i++;
if(i<j)
swap(a[i],a[j]);
}
swap(a[x],a[i]);
ksp(x,i-1);
ksp(i+1,y);
}
int main()
{
int x,y,i,j,k,n;
while(scanf("%d",&n)!=EOF)
{
for(i=0;i<n;i++)
scanf("%d",&a[i]);
ksp(0,n-1);
printf("%d",a[0]);
for(i=1;i<n;i++)
{
printf(" %d",a[i]);
}
printf("\n");
}
return 0;
}
本文来自博客园,作者:斯文~,转载请注明原文链接:https://www.cnblogs.com/zhiweb/p/15483396.html

浙公网安备 33010602011771号