此算法的时间复杂度为最坏情况下O(n2),期望时间复杂度为O(nlgn)。
#include<iostream>
#include<vector>using namespace std;
void swap(int &i,int &k)
{
int temp=i;
i=k;
k=temp;
}
int Partition(vector<int> &vec,int q,int r)
{
int x=vec[r];
int i=q-1;
for(int j=q;j<r;j++)
{
if(vec[j]<=x)
{
i++;
swap(vec[j],vec[i]);
}
}
swap(vec[i+1],vec[r]);
return i+1;
}
void QuickSort(vector<int> &vec,int q,int r)
{
if(q<r)
{
int p=Partition(vec,q,r);
QuickSort(vec,q,p-1);
QuickSort(vec,p+1,r);
}
}
int main()
{
vector<int> vec;
int num;
while(cin>>num)
{
vec.push_back(num);
}
int size=vec.size();
QuickSort(vec,0,size-1);
for(auto iter=vec.begin();iter<vec.end();iter++)
{
cout<<*iter<<" ";
}
cout<<endl;
}
本文介绍了一种高效的排序算法——快速排序,并提供了详细的实现代码。该算法采用分治策略,在最坏情况下的时间复杂度为O(n^2),但在期望情况下能达到O(n log n)。文章通过C++代码展示了如何进行元素交换、分区操作以及递归调用,最终实现了数组的排序。
1482

被折叠的 条评论
为什么被折叠?



