/*
Subject:计算机算法设计与分析
Title:2.8.2随机选择策略的快速排序
Coder:Hao
Class:计科0906
Num:0304090614
Date: Oct 2nd,2011
Programming Language:C++
*/
#include <iostream>
using namespace std;
//实现随机功能的函数
int Random(int p,int r)
{
return rand()%(r-p+1)+p;
}
//随机划分函数
template <class Type>
int RandomizedPartition(Type a[],int p,int r)
{
//随机的从p至r中抽取一个数
int i=Random(p,r);
//将a[i]和a[p]交换
Swap(a[i],a[p]);
//调用划分函数
return Partition(a,p,r);
}
//随机选择策略的快速排序主功能函数
template <class Type>
void QuickSort(Type a[],int p,int r)
{
//p为数组下界,r为数组上界
if(p<r)
{
//采用随机选择策略进行划分
int q=RandomizedPartition(a,p,r);
//对左半段排序
QuickSort(a,p,q-1);
//对右半段排序
QuickSort(a,q+1,r);
}
else return;}
//用于划分左右数组的函数
//p为数组下界,r为上界
template <class Type>
int Partition(Type a[],int p,int r)
{
int i=p,j=r+1;
Type x=a[p];
//将小于x的元素交换到左边区域
//将大于x的元素交换到右边区域
while(true)
{
while((a[++i]<x)&&
随机选择策略的快速排序
最新推荐文章于 2023-04-11 17:33:38 发布