您的位置:首页 > 编程语言 > C语言/C++

快速排序之C++实现

2017-05-22 15:18 204 查看
快速排序是排序算法的王者,其实是冒泡排序的升级版本。它的基本思想是:通过一趟排序将待排记录分割成独立的两部分,其中一部分记录的关键字均比另一部分的关键字小,则可分别对这两部分记录进行排序。时间复杂度为O(nlogn)。

代码实现如下:

#include
#include

using namespace std;

int Partition(vector &nums,int start,int end)
{
int index=start;                                       //此处可以选择其它值,不同的情况有不同的选择
int temp=nums[index];
for(int i=start+1,j=end;index!=j;)
{
if(nums[i]<=temp)
{
swap(nums[i],nums[index]);
index=i;
i++;
}
else
{
swap(nums[i],nums[j]);
j--;
}
}
return index;
}
void QuickSort(vector &nums,int start,int end)
{
if(start==end)
return;
int mid=Partition(nums,start,end);
if(mid>start)
QuickSort(nums,start,mid-1);
if(mid nums={9,5,4,1,7,6,3,2,8};
QuickSort(nums,0,nums.size()-1);
for(auto c:nums)
cout<
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息