#include<iostream>
using namespace std;
void swap(int &a,int &b)
{
int temp;
temp=a;
a=b;
b=temp;
}
int Partition(int a[],int p,int r){
int i=p;
int j=r+1;
int x=a[p];
//将大于x的元素交换到左边区域,将大于x的元素交换到右边区域
while(true)
{
while(a[++i]< x && i < r);
while(a[--j]>x);
if(i>=j)
{
break;
}
swap(a[i],a[j]);
}
a[p]=a[j];
a[j]=x;
return j;
}
void QuickSort(int a[],int p,int r)
{
if(p<r)
{
int q = Partition(a,p,r);
QuickSort(a,p,q-1);
QuickSort(a,q+1,r);
}
}
int main()
{
int a[]= {-2,6,88,0,-4,56};
QuickSort(a,0,5);
for(int i=0; i<6; i++)
{
cout << a[i] << " ";
}
cout << endl;
return 0;
}
分治法——快速排序
最新推荐文章于 2024-03-24 13:01:02 发布