fork download
  1. #include <stdio.h>
  2. #include <stdlib.h>
  3.  
  4. void quicksort(double *A, int len);
  5.  
  6. int main (void) {
  7. int n = 10000000;
  8. double *a = (double*)malloc(n * sizeof (double));
  9.  
  10. int i;
  11. for (i = 0; i < n; i++) {
  12. a[i] = rand();
  13. }
  14.  
  15. /*
  16.   double a[] = {4, 65, 2, -31, 0, 99, 2, 83, 782, 1};
  17.   int n = sizeof a / sizeof a[0];
  18.   int i;
  19.   for (i = 0; i < n; i++) {
  20.   printf("%d ", a[i]);
  21.   }
  22.   printf("\n");
  23.  */
  24. quicksort(a, n);
  25. /*
  26.   for (i = 0; i < n; i++) {
  27.   printf("%f ", a[i]);
  28.   }
  29.   printf("\n");
  30.  */
  31. return 0;
  32. }
  33.  
  34. void quicksort(double *A, int len) {
  35. if (len < 2) return;
  36.  
  37. int pivot = A[len / 2];
  38.  
  39. int i, j;
  40. for (i = 0, j = len - 1; ; i++, j--) {
  41. while (A[i] < pivot) i++;
  42. while (A[j] > pivot) j--;
  43.  
  44. if (i >= j) break;
  45.  
  46. double temp = A[i];
  47. A[i] = A[j];
  48. A[j] = temp;
  49. }
  50.  
  51. quicksort(A, i);
  52. quicksort(A + i, len - i);
  53. }
  54.  
Success #stdin #stdout 1.03s 79344KB
stdin
Standard input is empty
stdout
Standard output is empty