Advertisement
Gideer

Untitled

Jan 21st, 2019
89
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 0.95 KB | None | 0 0
  1. static void quick_sort(T *numbers, int leftIndex, int rightIndex, int complexity, int amount) {
  2. int left = leftIndex;
  3. int right = rightIndex;
  4. int midIndex = (leftIndex + rightIndex) / 2;
  5. int * values = new int[3]{ *(numbers + leftIndex), *(numbers + midIndex),*(numbers + rightIndex) };
  6. selection_sort(values, &values[2]);
  7. *(numbers + leftIndex) = *values;
  8. *(numbers + midIndex) = *(values + 1);
  9. *(numbers + rightIndex) = *(values + 2);
  10. delete[] values;
  11. int pivot = *(numbers + midIndex);
  12. do {
  13. while (*(numbers + left) < pivot) {
  14. left++;
  15. }
  16. while (*(numbers + right) > pivot) {
  17. right--;
  18. }
  19. if (left <= right) {
  20. std::swap(*(numbers + left), *(numbers + right));
  21. left++;
  22. right--;
  23. }
  24. } while (left <= right);
  25. if (leftIndex < right) quick_sort(numbers, leftIndex, right, complexity + 1, amount);
  26. if (rightIndex > left) quick_sort(numbers, left, rightIndex, complexity + 1, amount);
  27. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement