#include #include #include using namespace std; int partition(vector &nums, int low, int high, long long &comp_count, long long &move_count) { int pivot = nums[high]; int i = (low - 1); for (int j = low; j <= high - 1; j++) { comp_count++; if (nums[j] < pivot) { i++; swap(nums[i], nums[j]); move_count += 3; } } swap(nums[i + 1], nums[high]); move_count += 3; return (i + 1); } void quickSortHelper(vector &nums, int low, int high, long long &comp_count, long long &move_count) { if (low < high) { int pi = partition(nums, low, high, comp_count, move_count); quickSortHelper(nums, low, pi - 1, comp_count, move_count); quickSortHelper(nums, pi + 1, high, comp_count, move_count); } } /* * function : implement quick sort * param nums : the vector to be sorted * param comp_count : count of comparisons * param move_count : count of moves * return : --- */ void QuickSort(vector &nums, long long &comp_count, long long &move_count) { if (nums.empty()) return; quickSortHelper(nums, 0, nums.size() - 1, comp_count, move_count); }