As Easy As A+B

男娘i 2024-02-18 23:00 141阅读 0赞

As Easy As A+B

小Q有很多书籍,有一天他想整理一下,把这些书按书的大小从小到大摆起来,请你帮帮他好么

Input

输入包含多组测试。第一行输入一个整数T代表测试的个数,接下来的T行每一行包含一个整数N(1<=N<=1000),代表书本的本数,接下来N个数代表这N本书的大小

Output

对每个测试,输出排好序的结果

Sample Input

2
3 2 1 3
9 1 4 7 2 5 8 3 6 9

Sample Output

1 2 3
1 2 3 4 5 6 7 8 9

Hint

输出时每一个测试的最后一个数后面没有空格

  1. #include <stdio.h>
  2. #include <stdlib.h>
  3. #include <string.h>
  4. void paixu(int a[], int l, int r);
  5. int main()
  6. {
  7. int t, i, x;
  8. int a[1010];
  9. while(scanf("%d", &t) != EOF)
  10. {
  11. while(t--)
  12. {
  13. memset(a,0,sizeof(a));
  14. scanf("%d", &x);
  15. for(i = 0; i < x; i++)
  16. {
  17. scanf("%d", &a[i]);
  18. }
  19. paixu(a,0,x-1);
  20. for(i = 0; i < x; i++)
  21. {
  22. if(i == x - 1)
  23. {
  24. printf("%d\n", a[i]);
  25. }
  26. else
  27. {
  28. printf("%d ", a[i]);
  29. }
  30. }
  31. }
  32. }
  33. return 0;
  34. }
  35. void paixu(int a[], int l, int r)
  36. {
  37. int i = l, j = r;
  38. int x = a[i];
  39. if(i >= j)
  40. {
  41. return;
  42. }
  43. else
  44. {
  45. while(i < j)
  46. {
  47. while(i < j && a[j] >= x)
  48. {
  49. j--;
  50. }
  51. a[i] = a[j];
  52. while(i < j && a[i] <= x)
  53. {
  54. i++;
  55. }
  56. a[j] = a[i];
  57. }
  58. a[i] = x;
  59. paixu(a,l,i-1);
  60. paixu(a,i+1,r);
  61. }
  62. }

发表评论

表情:
评论列表 (有 0 条评论,141人围观)

还没有评论,来说两句吧...

相关阅读

    相关 As Easy As A+B

    As Easy As A+B 小Q有很多书籍,有一天他想整理一下,把这些书按书的大小从小到大摆起来,请你帮帮他好么 Input 输入包含多组测试。第一行输入一个整数T代表

    相关 oracle with as

    在写一个查询的时候让领导批评了,让我优化sql。提示我用 with as 经过学习oracle中with as,觉得非常有用。大大提升了复用性和效率 优点:增加了sql的易读