Advertisement
Skirtek

Untitled

Apr 10th, 2019
96
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.26 KB | None | 0 0
  1. #include "pch.h"
  2. #include <iostream>
  3. #include <ctime>
  4. #include <vector>
  5. #define SIZE 30
  6. using namespace std;
  7.  
  8. void quick_sort(vector<int> &numbers_vector, const int left_pivot, const int right_pivot) {
  9.  
  10.     const auto pivot = numbers_vector[(left_pivot + right_pivot) / 2];
  11.     auto i = left_pivot, j = right_pivot;
  12.  
  13.     while (i <= j) {
  14.         while (numbers_vector[i] < pivot) ++i;
  15.         while (numbers_vector[j] > pivot) --j;
  16.         if (i <= j) {
  17.             swap(numbers_vector[i], numbers_vector[j]);
  18.             ++i, --j;
  19.         }
  20.     }
  21.  
  22.     if (i < right_pivot)
  23.     {
  24.         quick_sort(numbers_vector, i, right_pivot);
  25.     }
  26.     if (j > left_pivot)
  27.     {
  28.         quick_sort(numbers_vector, left_pivot, j);
  29.     }
  30. }
  31.  
  32. void sort(vector<int> &numbers_vector) {
  33.     if (!numbers_vector.empty()) {
  34.         quick_sort(numbers_vector, 0, numbers_vector.size() - 1);
  35.     }
  36. }
  37.  
  38. int main()
  39. {
  40.     vector<int> numbers_vector;
  41.  
  42.     srand(time(nullptr));
  43.     numbers_vector.reserve(SIZE);
  44.  
  45.     for (auto i = 0; i < SIZE; i++)
  46.     {
  47.         numbers_vector.push_back(rand() % 1500);
  48.     }
  49.  
  50.     //Code to check how algorithm handles with same values
  51.     //numbers_vector.push_back(numbers_vector[0]);
  52.  
  53.     sort(numbers_vector);
  54.  
  55.     cout << "Zakonczono sortowanie. Tablica po posortowaniu:" << endl;
  56.     for (auto& i : numbers_vector)
  57.     {
  58.         cout << i << endl;
  59.     }
  60.  
  61.     return 0;
  62. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement