Advertisement
wintest

Quick sort

Oct 23rd, 2017
114
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.55 KB | None | 0 0
  1. /*void quickSort(int arr[], int left, int right) {
  2. int i = left, j = right;
  3. int tmp;
  4. int pivot = arr[(left + right) / 2];
  5.  
  6. /* partition */
  7. /*while (i <= j) {
  8. while (arr[i] < pivot)
  9. i++;
  10. while (arr[j] > pivot)
  11. j--;
  12. if (i <= j) {
  13. tmp = arr[i];
  14. arr[i] = arr[j];
  15. arr[j] = tmp;
  16. //побутване
  17. i++;
  18. j--;
  19. }
  20. };
  21.  
  22. /* recursion */
  23. /*if (left < j)
  24. quickSort(arr, left, j);
  25. if (i < right)
  26. quickSort(arr, i, right);
  27.  
  28. }*/
  29. //etalon - стойността на мсива, която е в средата
  30. #include <iostream>
  31.  
  32. using namespace std;
  33.  
  34. void quick_sort(int[], int, int);
  35. int partition(int[], int, int);
  36.  
  37. int main()
  38. {
  39.     int a[50], n, i;
  40.     cout << "How many elements?";
  41.     cin >> n;
  42.     cout << "\nEnter array elements:";
  43.  
  44.     for (i = 0; i<n; i++)
  45.         cin >> a[i];
  46.  
  47.     quick_sort(a, 0, n - 1);
  48.     cout << "\nArray after sorting:";
  49.  
  50.     for (i = 0; i<n; i++)
  51.         cout << a[i] << " ";
  52.     cout << endl;
  53.     return 0;
  54. }
  55.  
  56. void quick_sort(int a[], int l, int u)
  57. //не е рекурсивна функция
  58.  
  59. {
  60.     int j;
  61.     if (l<u)
  62.     {
  63.         j = partition(a, l, u);
  64.         quick_sort(a, l, j - 1);
  65.         quick_sort(a, j + 1, u);
  66.     }
  67. }
  68.  
  69. int partition(int a[], int l, int u)
  70. {
  71.     int v, i, j, temp;
  72.     v = a[l];
  73.     i = l;
  74.     j = u + 1;
  75.  
  76.     do
  77.     {
  78.         do
  79.  
  80.             i++;
  81.  
  82.         while (a[i]<v&&i <= u);
  83.  
  84.         do
  85.             //побутване
  86.             j--;
  87.        
  88.         while (v<a[j]);
  89.  
  90.         if (i<j)
  91.         {
  92.             temp = a[i];
  93.             a[i] = a[j];
  94.             a[j] = temp;
  95.         }
  96.         //разменяме стойностите според условието
  97.     } while (i<j);
  98.  
  99.     a[l] = a[j];
  100.     a[j] = v;
  101.  
  102.     return(j);
  103. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement