分治法-快速排序
快速排序
代码如下:
#include <iostream>
using namespace std;
int Partition(int *data,int p,int r)
{
int i=p;
int j=r+1;
int x=data[p];
while(true)
{
while(data[++i]<x);
while(data[--j]>x);
if(i>=j)
break;
int temp=data[i];
data[i]=data[j];
data[j]=temp;
}
data[p]=data[j];
data[j]=x;
return j;
}
void QuickSort(int *data,int p,int r)
{
if(p<r)
{
int q=Partition(data,p,r);
QuickSort(data,p,q-1);
QuickSort(data,q+1,r);
}
}
int main()
{
int num;
int *data;
cin>>num;
data=new int[num];
for(int i=0;i<num;i++)
cin>>data[i];
QuickSort(data,0,num-1);
for(int i=0;i<num;i++)
cout<<data[i]<<" ";
cout<<endl;
}
运行结果:

态度决定高度,细节决定成败,

浙公网安备 33010602011771号