关闭

第7章:快速排序

157人阅读 评论(0) 收藏 举报
分类:

随机化快速排序:

1:对数组的随机划分:

int random(int i,int j)
{
        return rand()%(j-i+1)+i;
}

template<class Type>
int partition(vector<Type>& array, int left,int right)
{
        Type compareVal=array[right];

        int i=left-1;
        for(int j=left;j!=right;++j)
                if(array[j]<=compareVal){
                        ++i;
                        swap(array[i],array[j]);
                }
        swap(array[i+1],array[right]);

        return i+1;
}

template<class Type>
int randomPartition(vector<Type>& array,int left,int right)
{
        int pivotPosition=random(left,right);
        swap(array[pivotPosition],array[right]);
        return partition(array,left,right);
}

2:快速排序:

template<class Type>
void quickSort(vector<Type>& array,int left,int right)
{
        if(left<right){
                if(20<right-left){
                        int breakPoint=randomPartition(array,left,right);
                        quickSort(array,left,breakPoint-1);
                        quickSort(array,breakPoint+1,right);
                }
                else
                        insertionSort(array,left,right);
        }
}

template<class Type>
void quickSort(vector<Type>& array)
{
        if(array.size()==0)
                throw underflow_error("the array is empty.Please enter again");

        if(array.size()==1)
                return;

        quickSort(array,0,array.size()-1);
}
0
0

猜你在找
【直播】机器学习&数据挖掘7周实训--韦玮
【套餐】系统集成项目管理工程师顺利通关--徐朋
【直播】3小时掌握Docker最佳实战-徐西宁
【套餐】机器学习系列套餐(算法+实战)--唐宇迪
【直播】计算机视觉原理及实战--屈教授
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之矩阵--黄博士
【套餐】微信订阅号+服务号Java版 v2.0--翟东平
【直播】机器学习之凸优化--马博士
【套餐】Javascript 设计模式实战--曾亮
查看评论
* 以上用户言论只代表其个人观点,不代表CSDN网站的观点或立场