Advertisement
Guest User

Untitled

a guest
Mar 24th, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.05 KB | None | 0 0
  1. //
  2. // Created by syh on 19-3-14.
  3. //
  4.  
  5.  
  6. #include <stdio.h>
  7.  
  8. void swap(int a[], int i, int j) {
  9. int t = a[i];
  10. a[i] = a[j];
  11. a[j] = t;
  12. }
  13.  
  14. int partition(int a[], int p, int r) {
  15. int x = a[p]; // pivot
  16. int i = p; // pivot 位置,即首个被排序元素的前一位
  17. int j = r + 1; // 最后一个元素的后一位
  18.  
  19. while (1) {
  20. while (i < r && a[++i] < x);
  21. while (a[--j] > x); // 隐含 j > p
  22. if (i >= j) break;
  23. swap(a, i, j);
  24. }
  25. swap(a, p, j); // 此行填空
  26. return j;
  27. }
  28.  
  29. void quicksort(int a[], int p, int r) {
  30. if (p < r) {
  31. int q = partition(a, p, r); // q 是 pivot
  32. quicksort(a, p, q - 1);
  33. quicksort(a, q + 1, r);
  34. }
  35. }
  36.  
  37.  
  38. int main() {
  39. int i;
  40. int a[] = {5, 13, 6, 24, 2, 8, 19, 27, 6, 12, 1, 17};
  41. int N = 12;
  42.  
  43. quicksort(a, 0, N - 1);
  44.  
  45. for (i = 0; i < N; i++) printf("%d ", a[i]);
  46. printf("\n");
  47.  
  48.  
  49. int b[] = {43, 48, 12, 94, 72};
  50. N = 5;
  51.  
  52. quicksort(b, 0, N - 1);
  53.  
  54. for (i = 0; i < N; i++) printf("%d ", b[i]);
  55. printf("\n");
  56.  
  57. return 0;
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement