当前位置 博文首页 > 爱新觉罗?炒饭的博客:快速排序(分治+递归)
#include <iostream>
#include <string.h>
using namespace std;
int Partition(int a[],int left,int right)
{
int key=a[left];
while(left<right)
{
while(left<right&&a[right]>=key) //从最右边寻找,当找到比key小的值时退出循环
right--;
if(left<right)
a[left]=a[right];
while(left<right&&a[left]<=key) //从最左边开始寻找,当找到比key大的值退出循环
left++;
if(left<right)
a[right]=a[left];
}
a[left]=key;
return left;
}
void Quicksort(int a[],int left,int right)
{
if(left<right)
{
int q=Partition(a,left,right);
Quicksort(a,left,q-1);
Quicksort(a,q+1,right);
}
}
int main()
{
int a[100];
int n;
cin>>n;
for(int i=0;i<n;i++)
cin>>a[i];
Quicksort(a,0,n-1);
for(int i=0;i<n;i++)
cout<<a[i]<<" ";
return 0;
}
cs