分治算法之快排
动画演示

黄色:基准元素
绿色:比基准元素小
紫色:比基准元素大
代码
#include<iostream>
using namespace std;
int a[1005];
int n;//元素的个数
int split(int low,int high)
{
int x = a[low]; //基准元素
while(low<high)
{
while(low<high&&a[high]>x) --high;
a[low] = a[high];
while(low<high&&a[low]<=x) ++low;
a[high] = a[low];
}
a[low] = x;
int w = low;
return w;//基准元素的位置
}
void quickSort(int low,int high)
{
int w;
if(low<high)
{
w=split(low,high);
quickSort(low,w-1);
quickSort(w+1,high);
}
}
int main()
{
cout<<"请输入元素个数:";
cin>>n;
cout<<endl<<"请输入将要排序的元素:";
for(int i=1;i<=n;i++)
cin>>a[i];
quickSort(1,n);
for(int i=1;i<=n;i++)
cout<<a[i]<<" ";
return 0;
}
时间复杂度


浙公网安备 33010602011771号