递归与分治策略-----快速排序(C++)

#include <iostream>
#include <vector>
#include <iterator>
#include <algorithm>
#include <cstdio>
using namespace std;

 

template <class T>
int partition(vector<T>& arr,int low,int high)
{
//arr[0]=arr[low];
int pivot=arr[low];
while(low<high){
while(low<high&&arr[high]>=pivot)
--high;
arr[low]=arr[high];
while(low<high&&arr[low]<=pivot)
++low;
arr[high]=arr[low];
}
arr[low]=pivot;
return low;
}

template <class T>
void qSort(vector<T>& arr,int start,int end)
{
int q;
if(start<end){
q=partition(arr,start,end);
qSort(arr,start,q-1);
qSort(arr,q+1,end);
}
}

template <class T>
void DisPlay(vector<T>& arr,int length)
{
for(int k=0;k<length;++k)
cout << arr[k] << " ";
cout << endl;
}

int main()
{
const int length = 20;
vector<int> arr(length);
for (size_t i = 0;i < arr.size(); ++ i)
arr[i] = i;
random_shuffle(arr.begin(),arr.end());

//copy(arr.begin(),arr.end(),ostream_iterator<int>(cout, " "));
//cout << endl;
//int arr[]={2,7,4,1,3,5,9,8,6,10};
//int length=sizeof(arr)/sizeof(arr[0]);
cout << "快速排序前输出: " << endl;
DisPlay(arr,length);

qSort(arr,0,length-1);

//copy(arr.begin(),arr.end(),ostream_iterator<int>(cout, " "));
// cout << endl;

cout << "快速排序后输出: " << endl;
DisPlay(arr,length);
return 0;
}

转载于:https://www.cnblogs.com/phoenixzq/archive/2010/11/16/1878829.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值