fork download
  1. void qsort1(int *a, int n){
  2. if(n>1){
  3. int l=0, r=n-1, m=n/2;
  4. while(l<=r){
  5. while(a[l]<a[m])l++;
  6. while(a[r]>a[m])r--;
  7. if(l<=r){
  8. int t=a[l];
  9. a[l]=a[r];
  10. a[r]=t;
  11. l++; r--;
  12. }
  13. }
  14. qsort(a, r+1);
  15. qsort(a+l, n-l);
  16. }
  17. }
  18.  
  19. void qsort2(int *a, int n){
  20. if(n>1){
  21. int l=0, r=n-1, m=n/2;
  22. while(l<=m && m<r){
  23. while(a[l]<=m)l++;
  24. while(a[r]>=m)r--;
  25. int t=a[l]; a[l]=a[r]; a[r]=t; l++; r--;
  26. }
  27. qsort(a, m);
  28. qsort(a+m, m);
  29. }
  30. }
  31.  
  32. int main() {
  33. int i, a[]={-1,1,-1,1,-1,1,-1,1,-1,1,-1};
  34. for(i=0;i<sizeof(a)/sizeof(int);i++)printf("%d ", a[i]);
  35. qsort1(a, sizeof(a)/sizeof(int));
  36. printf("\n");
  37. for(i=0;i<sizeof(a)/sizeof(int);i++)printf("%d ", a[i]);
  38. }
Runtime error #stdin #stdout 0s 4512KB
stdin
Standard input is empty
stdout
Standard output is empty