快速排序
#include<iostream>
using namespace std;
void sort(int*l,int low,int high);//快速排序函数
int partion(int*l,int low,int high);//判断枢轴位置函数
void main()
{
int a[100];int i=0;int j=0;
int*l;
l=a;
cout<<"输入数据(-1退出):"<<endl;//存储待排序数据
cout<<"第"<<i+1<<"个:";
cin>>a[i];
while(a[i]!=-1)//
{
i++;
cout<<"第"<<i+1<<"个:";
cin>>a[i];
}
j=i-1;
sort(l,0,j);//对数据进行快速排序
cout<<"快速排序得:"<<endl;
for(i=0;i<=j;i++)
{
cout<<a[i]<<" ";
}
cout<<endl;
}
void sort(int*l,int low,int high)
{
if(low<high)//递归进行排序
{
int key=partion(l,low,high);
sort(l,low,key-1);
sort(l,key+1,high);
}
}
int partion(int*l,int low,int high)//递归移动枢轴并获取新的枢轴
{
int p=0;
int key=l[low];
while(low<high)
{
while(low<high&&l[high]>=key)
{
--high;
}
p=l[low];
l[low]=l[high];
l[high]=p;
while(low<high&&l[low]<=key)
{
++low;
}
p=l[low];
l[low]=l[high];
l[high]=p;
}
return low;
}

浙公网安备 33010602011771号