//快速排序
//PARTITION 函数对数组进行划分,选择A[end]值作为主元,start到i的值小于A[end],i+1到end-1的值大于A[end],最后将i+1和end处的值交换,实现数组的划分
#include <iostream>
using namespace std;
int PARTITION(int A[],int start,int end)
{
int mid_value;
mid_value=A[end];
int i=start-1;
for(int j=start;j<end;j++)
{
if(A[j]<=mid_value)
{
i++;
int temp_1=A[i]; A[i]=A[j]; A[j]=temp_1; //交换A[i]和A[j]
}
}
int temp_2=A[i+1]; A[i+1]=A[end]; A[end]=temp_2;
return i+1;
}
void QUICK_SORT(int A[],int start,int end)
{
if(start<end)
{
int mid;
mid=PARTITION(A,start,end);
QUICK_SORT(A,start,mid-1);
QUICK_SORT(A,mid+1,end);
}
}
int main(int argc, char *argv[])
{
int n;
cin>>n;
int a[n];
for(int i=0;i<n;i++) cin>>a[i];
QUICK_SORT(a,0,n-1);
for(int i=0;i<n;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
cout << "Hello World!" << endl;
return 0;
}
快速排序(分治法)
最新推荐文章于 2022-03-05 19:47:08 发布