- 题目描述:
-
对输入的n个数进行排序并输出。
- 输入:
-
输入的第一行包括一个整数n(1<=n<=100)。
接下来的一行包括n个整数。
- 输出:
-
可能有多组测试数据,对于每组数据,将排序后的n个整数输出,每个数后面都有一个空格。
每组测试数据的结果占一行。
- 样例输入:
-
4 1 4 3 2
- 样例输出:
-
1 2 3 4
1 #include <stdio.h> 2 #include "StdAfx.h" 3 #include <malloc.h> 4 5 //快速排序 6 void quick_sort(int s[], int l, int r) 7 { 8 if (l < r) 9 { 10 //Swap(s[l], s[(l + r) / 2]); //将中间的这个数和第一个数交换 参见注1 11 int i = l, j = r, x = s[l]; 12 while (i < j) 13 { 14 while(i < j && s[j] >= x) // 从右向左找第一个小于x的数 15 j--; 16 if(i < j) 17 s[i++] = s[j]; 18 19 while(i < j && s[i] < x) // 从左向右找第一个大于等于x的数 20 i++; 21 if(i < j) 22 s[j--] = s[i]; 23 } 24 s[i] = x; 25 quick_sort(s, l, i - 1); // 递归调用 26 quick_sort(s, i + 1, r); 27 } 28 } 29 30 int main() 31 { 32 int length; 33 while(scanf("%d",&length)!=EOF) 34 { 35 int *s; 36 s=(int*)malloc(length*sizeof(int)); 37 for(int i=0;i<length;i++) 38 { 39 scanf("%d",&s[i]); 40 } 41 //printf(" "); 42 quick_sort(s,0,length-1); 43 for(int i=0;i<length;i++) 44 { 45 printf("%d ",s[i]); 46 } 47 printf(" "); 48 } 49 }