您的位置:首页 > 其它

快速排序

2015-09-19 21:35 225 查看

用了模板来实现的快速排序,思想是:先选一个随机的值作为关键值,然后让地位和高位的分别和它进行比较,把比它小的都放在它的前面,比它大的都放在后面,然后递归的实现!

#include<iostream>
using namespace std;

template<typename Type>
void print(Type *arr,int length)
{
for(int i=0;i<=length;++i)
{
cout<<arr[i]<<" ";
}
cout<<endl;
}
template<typename Type>
int partition(Type *arr,int low,int high)
{
Type key=arr[low];
while(low<high)
{
while(low<high && arr[high]>=key) --high;
arr[low]=arr[high];
while(low<high && arr[low]<=key) ++low;
arr[high]=arr[low];
}
arr[low]=key;
return low;
}
template<typename Type>
void Sort(Type *arr,int low,int high)
{
if(low<high)
{
int pos=partition(arr,low,high);
Sort(arr,low,pos-1);
Sort(arr,pos+1,high);
}
}
void main()
{
double arr[]={1,4,7,5,2,3,8,9};
int length=sizeof(arr)/sizeof(*arr)-1;
cout<<"排序前:"<<endl;
print(arr,length);
Sort(arr,0,length);
cout<<"排序后:"<<endl;
print(arr,length);
}


内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: