#include #include

using namespace std;

// 分治函数,用于快速排序 void quickSort(vector& nums, int left, int right) { if (left >= right) return; // 如果左右索引相等或左索引大于右索引,直接返回 int pivot = nums[(left + right) / 2]; // 选择中间值作为基准值 int i = left, j = right; // 定义左右指针 while (i <= j) { while (nums[i] < pivot) i++; // 左指针向右移动,直到找到第一个大于等于基准值的数 while (nums[j] > pivot) j--; // 右指针向左移动,直到找到第一个小于等于基准值的数 if (i <= j) { // 如果左指针小于右指针,则交换两个数 swap(nums[i], nums[j]); i++; j--; } } quickSort(nums, left, j); // 对左子数组进行快速排序 quickSort(nums, i, right); // 对右子数组进行快速排序 }

int main() { vector nums{5, 2, 8, 6, 1, 9}; quickSort(nums, 0, nums.size() - 1); for (int num : nums) { cout << num << ' '; // 输出排序后的数组 } return 0; }

C++ 快速排序算法:分治法实现

原文地址: https://www.cveoy.top/t/topic/nIUT 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录