1064-快速排序
描述
给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中快速排序算法进行排序,并输出排序最后结果的相应序列。
输入
共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤100000,每个元素值范围为 [0,100000)
输出
一行,输出排序结果。
样例输入
7
48 36 68 72 12 48 2
样例输出
2 12 36 48 48 68 72
#include<stdio.h> #include<stdlib.h> int qkpass(int *r,int left,int right) { int i,j, x=r[left]; i=left; j=right; while(i<j) { while(i<j&&r[j]>=x) j--; if(i<j) { r[i]=r[j]; i++; } while(i<j&&r[i]<x) i++; if(i<j) { r[j]=r[i]; j--; } } r[i]=x; return i; } void qksort(int*r,int i,int j) { int p; if(i<j) { p=qkpass(r,i,j); qksort(r,i,p-1); qksort(r,p+1,j); } } int main() { int i,*r,len; scanf("%d",&len); r=(int*)malloc(len*sizeof(int)); for(i=0;i<len;i++) scanf("%d",&r[i]); qksort(r,0,len-1); for( i=0;i<len-1;i++) printf("%d ",r[i]); printf("%d\n",r[len-1]); free(r); return 0; }