Advertisement
Tark_Wight

quickSort

Apr 7th, 2024 (edited)
534
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.69 KB | Source Code | 0 0
  1. //Quicksort(A, l, k) -> A[l]...A[h]
  2. //A - массив
  3. //l, h - индексы массива
  4. //
  5. //if l < h then
  6. //    p <- Partition(A, l, k)
  7. //    Quicksort(A, l, p - 1)
  8. //    Quicksort(A, p + 1, k)
  9. //
  10. //
  11. //A[0]...A[p - 1] < A[p] <= A[p + 1]...A[n - 1]
  12. //Partition(A, l, k) -> b
  13. //    p <- PickElement(A)
  14. //    Swap(A[p], A[k])
  15. //    b <- l
  16. //    for i <- l to k
  17. //        if Compare(A[i], A[k]) < 0
  18. //            Swap(A[b], A[i])
  19. //            b++
  20. //    Swap(A[k], A[b])
  21. //return b
  22.  
  23.  
  24.  
  25.  
  26. #include <iostream>
  27. #include <vector>
  28.  
  29. void quickSort(std::vector<int>& array, int leftIndex, int rightIndex) {
  30.     if (leftIndex <= rightIndex) {
  31.         int pivot = (array[leftIndex] + array[(leftIndex + rightIndex) / 2] + array[rightIndex]) / 3;
  32.         int start = leftIndex, end = rightIndex;
  33.        
  34.         while (start <= end) {
  35.             while (array[start] < pivot) {
  36.                 start++;
  37.             }
  38.             while (array[end] > pivot) {
  39.                 end--;
  40.             }
  41.             if (start <= end) {
  42.                 if (start < end) {
  43.                     std::swap(array[start], array[end]);
  44.                 }
  45.                
  46.                 start++;
  47.                 end--;
  48.             }
  49.         }
  50.         quickSort(array, leftIndex, end);
  51.         quickSort(array, start, rightIndex);
  52.     } else {
  53.         return;
  54.     }
  55. }
  56.  
  57.  
  58.  
  59. int main() {
  60.    
  61.    
  62.    
  63.     int size;
  64.     std::cin >> size;
  65.    
  66.     std::vector<int> array(size);
  67.     for (auto& element : array) {
  68.         std::cin >> element;
  69.     }
  70.    
  71.     quickSort(array, 0, size - 1);
  72.    
  73.     for (auto element : array) {
  74.         std::cout << element << ' ';
  75.     }
  76.     return 0;
  77. }
  78.  
Tags: Quicksort
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement