fork(1) download
  1. #include<stdio.h>
  2. #include<stdlib.h>
  3. #include<string.h>
  4.  
  5. void quicksort_(int a[], int l, int r);
  6. void quicksort(int a[], int n);
  7.  
  8. void quicksort_(int a[], int l, int r) {
  9. int lp;
  10. int rp;
  11. int c;
  12. int p;
  13. int t;
  14.  
  15. while (l < r) {
  16. lp = l;
  17. rp = r;
  18. c = ((rp - lp) >> 1) + lp;
  19.  
  20. t = a[c];
  21. if (t < a[lp]) {
  22. a[c] = a[lp];
  23. a[lp] = t;
  24. }
  25. t = a[rp];
  26. if (t < a[c]) {
  27. a[rp] = a[c];
  28. if (t < a[lp]) {
  29. a[c] = a[lp];
  30. a[lp] = t;
  31. } else {
  32. a[c] = t;
  33. }
  34. }
  35.  
  36. p = a[c];
  37. lp++;
  38. rp--;
  39.  
  40. while (lp <= rp) {
  41. while (a[lp] < p) {
  42. lp++;
  43. }
  44.  
  45. while (p < a[rp]) {
  46. rp--;
  47. }
  48.  
  49. if (rp < lp) {
  50. break;
  51. }
  52.  
  53. t = a[lp];
  54. a[lp] = a[rp];
  55. a[rp] = t;
  56.  
  57. lp++;
  58. rp--;
  59. }
  60.  
  61. if (rp - l < r - lp) {
  62. quicksort_(a, l, rp);
  63. l = lp;
  64. } else {
  65. quicksort_(a, lp, r);
  66. r = rp;
  67. }
  68. }
  69. }
  70.  
  71. void quicksort(int a[], int n) {
  72. quicksort_(a, 0, n - 1);
  73. }
  74.  
  75. int main(void) {
  76. FILE *fin;
  77. char buf[256];
  78. char *token;
  79. int nums[10];
  80. int i;
  81.  
  82. fin = fopen("numbers.dat", "r");
  83. fgets(buf, 256, fin);
  84. fclose(fin);
  85.  
  86. token = strtok(buf, " ");
  87. for (i = 0; i < 10; i++) {
  88. nums[i] = atoi(token);
  89. token = strtok(NULL, " ");
  90. }
  91.  
  92. quicksort(nums, 10);
  93.  
  94. for (i = 0; i < 10; i++) {
  95. printf("%d ", nums[i]);
  96. }
  97.  
  98. return 0;
  99. }
Runtime error #stdin #stdout 0.01s 1848KB
stdin
Standard input is empty
stdout
Standard output is empty