快速排序简要介绍
快速排序
基本思想:选取一个基准值,将小于基准值的元素放到其左边,大于基准值的元素放到右边,这样基准值就排好序了
#include <vector>
#include <iostream>static int partition(std::vector<int>& nums, int beg, int end)
{int base = nums[beg]; //选取第一个元素为基准元素while (beg < end){while (beg < end && nums[end] >= base) end--; //寻找小于base的元素nums[beg] = nums[end];while (beg < end && nums[beg] < base) beg++; //寻找大于base的元素nums[end] = nums[beg];}nums[beg] = base;return beg;
}static void quickSort(std::vector<int>& nums, int beg, int end)
{if (beg >= end) return;int mid = partition(nums, beg, nums.size() - 1);quickSort(nums, beg, mid);quickSort(nums, mid + 1, end);
}int main()
{std::vector<int> nums = { 7, 6, 5, 4, 3, 2, 1 };quickSort(nums, 0, nums.size() - 1);for (int v : nums) std::cout << v << ' ';return 0;
}
