快速排序
时间限制(普通/Java) : 1000 MS/ 3000 MS 运行内存限制 : 65536 KByte
总提交 : 1125 测试通过 : 426
总提交 : 1125 测试通过 : 426
比赛描述
给定输入排序元素数目n和相应的n个元素,写出程序,利用内排序算法中快速排序算法进行排序,并输出排序最后结果的相应序列。
输入
共两行,第一行给出排序元素数目n,第二行给出n个元素,1≤n≤100000,每个元素值范围为 [0,100000)
输出
一行,输出排序结果。
样例输入
7
48 36 68 72 12 48 2
样例输出
2 12 36 48 48 68 72
提示
数据结构A实验四
题目来源
CHENZ
//AC:
1 #include <stdio.h> 2 int num[100100] ; 3 int Partition(int array[], int left, int right) //快排 ; 4 { 5 int i, j ; 6 int temp ; 7 j = left - 1 ; 8 for(i = left; i<=right; i++) 9 { 10 if(array[i] <= array[right]) 11 { 12 j++ ; 13 temp = array[j] ; 14 array[j] = array[i] ; 15 array[i] = temp ; 16 } 17 } 18 return j ; 19 } 20 void QuickSort(int array[], int left, int right) 21 { 22 int pivot ; 23 if(left < right) 24 { 25 pivot = Partition(array, left, right) ; 26 QuickSort(array, left, pivot-1) ; 27 QuickSort(array, pivot+1, right) ; 28 } 29 } 30 int main() 31 { 32 int n, i ; 33 while(~scanf("%d", &n)) 34 { 35 for(i=0; i<n; i++) 36 scanf("%d", &num[i]) ; 37 QuickSort(num, 0, n-1) ; 38 printf("%d", num[0]) ; 39 for(i=1; i<n; i++) 40 printf(" %d", num[i]) ; 41 printf(" ") ; 42 } 43 return 0 ; 44 }