快速排序

利用快速排序算法将读入的 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;	
 } 

 

posted @ 2021-01-31 20:41  斯文~  阅读(13)  评论(0)    收藏  举报

你好!