2.快速排序
/**
数组排序任务可以如下完成:
第一步:设k=a[0],将k挪到适当位置,使得比k小的元素都在k左边,比k大的元素都在k右边 ,
和k相等的,不关心在k左右出现均可。
第二步:把k左边的部分快速排序
第三步:把k右边的部分快速排序
*/
#include<iostream>
#define maxsize 100
using namespace std;
void swap(int &a,int &b)
{
int temp=a;
a=b;
b=temp;
}
void QuickSort(int a[],int left,int right)
{
if(left>=right)
return;
int i=left,j=right;
int temp=a[i];
while(i!=j)
{
while(j>i&&a[j]>=temp)
--j;
swap(a[i],a[j]);
while(i<j&&a[i]<=temp)
++i;
swap(a[i],a[j]);
}
QuickSort(a,left,i-1);
QuickSort(a,i+1,right);
}
int main()
{
int a[maxsize];
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]<<" ";
cout<<endl;
return 0;
}
1万+



被折叠的 条评论
为什么被折叠?



