一个简单的快速排序
#include <iostream>
using namespace std;
void quicksort(int a[],int L,int R);
void quicksort(int a[],int L,int R)
{
if(L>=R)
{
return;//别忘了结束递归
}
int mark=(R+L)/2; //找出中间那一项的元素
int pivot=a[mark];
int r=R,l=L;
a[mark]=a[l];
while(r>l)
{
while(r>l&&a[r]>=pivot)
{
r--;
}
if(r>l)
{
a[l]=a[r];
}
while(r>l&&a[l]<=pivot)
{
l++;
}
if(r>l)
{
a[r]=a[l];
}
if(r<=l)
{
a[l]=pivot;
}
}
quicksort(a,L,r);
quicksort(a,r+1,R);
}
int main()
{
int n;
cin>>n;
int a[n+1];
for(int i=1; i<n+1; i++)
{
cin>>a[i];
}
quicksort(a,1,n);
for(int i=1; i<n+1; i++)
{
cout<<a[i]<<' ';
}
return 0;
}
#include <iostream>
using namespace std;
void quicksort(int a[],int L,int R);
void quicksort(int a[],int L,int R)
{
if(L>=R)
{
return;//别忘了结束递归
}
int mark=(R+L)/2; //找出中间那一项的元素
int pivot=a[mark];
int r=R,l=L;
a[mark]=a[l];
while(r>l)
{
while(r>l&&a[r]>=pivot)
{
r--;
}
if(r>l)
{
a[l]=a[r];
}
while(r>l&&a[l]<=pivot)
{
l++;
}
if(r>l)
{
a[r]=a[l];
}
if(r<=l)
{
a[l]=pivot;
}
}
quicksort(a,L,r);
quicksort(a,r+1,R);
}
int main()
{
int n;
cin>>n;
int a[n+1];
for(int i=1; i<n+1; i++)
{
cin>>a[i];
}
quicksort(a,1,n);
for(int i=1; i<n+1; i++)
{
cout<<a[i]<<' ';
}
return 0;
}