Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- static void quick_sort(T *numbers, int leftIndex, int rightIndex, int complexity, int amount) {
- int left = leftIndex;
- int right = rightIndex;
- int midIndex = (leftIndex + rightIndex) / 2;
- int * values = new int[3]{ *(numbers + leftIndex), *(numbers + midIndex),*(numbers + rightIndex) };
- selection_sort(values, &values[2]);
- *(numbers + leftIndex) = *values;
- *(numbers + midIndex) = *(values + 1);
- *(numbers + rightIndex) = *(values + 2);
- delete[] values;
- int pivot = *(numbers + midIndex);
- do {
- while (*(numbers + left) < pivot) {
- left++;
- }
- while (*(numbers + right) > pivot) {
- right--;
- }
- if (left <= right) {
- std::swap(*(numbers + left), *(numbers + right));
- left++;
- right--;
- }
- } while (left <= right);
- if (leftIndex < right) quick_sort(numbers, leftIndex, right, complexity + 1, amount);
- if (rightIndex > left) quick_sort(numbers, left, rightIndex, complexity + 1, amount);
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement