快速排序(C++)
#include "iostream.h"
void quicksort(int A[],int low,int high);
int split(int A[],int low,int high);
void Swap(int &x,int &y);
void main()
{
cout<<"-----------------快速排序法------------";
int A[]={1,8,9,4,5,3};
quicksort(A,0,5);
for(int i=0;i<=5;i++)
{
cout<<A[i]<<endl;
}
}
void quicksort(int A[],int low,int high)
{
int k;
if(low<high)
{
k=split (A, low, high);;
quicksort(A,low,k-1);
quicksort(A,k+1,high);
}
}
int split(int A[],int low,int high)
{
int k,i=low;
int x=A[low];
for(k=low+1;k<=high;k++)//--------
{
if(A[k]<=x)
{
i=i+1;
if(i!=k)
{
Swap(A[i],A[k]);
}
}
}
Swap(A[low],A[i]);
return i;
}
void Swap(int &x,int &y)
{
int temp;
temp=x;
x=y;
y=temp;
}