第9章:中位数和顺序统计量

原创 2016年05月30日 22:18:03

快速选择算法如下:

template<class Type>
void quickSelect(vector<Type>& array,int k,int left,int right)
{
         //尾递归
/*
        if(left<right){
                if(10<=right-left){
                        int breakPoint=randomPartition(array,left,right);
                        if(breakPoint==k-1)
                                return;
                        else if(breakPoint<k-1)
                                quickSelect(array,k,breakPoint+1,right);
                        else
                                quickSelect(array,k,left,breakPoint-1);
                }
                else
                        insertionSort(array,left,right);
        }
*/

         //没有尾递归情况
        while(left<right){
                if(10<=right-left){
                        int breakPoint=randomPartition(array,left,right);
                        if(breakPoint==k-1)
                                break;
                        else if(breakPoint<k-1)
                                left=breakPoint+1;
                        else
                                right=breakPoint-1;
                }
                else{
                        insertionSort(array,left,right);
                        break;
                }
        }

}

template<class Type>
const Type& quickSelect(vector<Type>& array,int k)
{
        quickSelect(array,k,0,array.size()-1);
        return array[k-1];

}
版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

《算法导论》第9章 中位数和顺序统计量 个人笔记

第9章 中位数和顺序统计量9.1 最小值和最大值 9.2 期望为线性时间的选择算法 9.3 最坏情况为线性时间的选择算法...
  • Amber07
  • Amber07
  • 2017年05月15日 10:16
  • 132

算法导论 第9章 中位数和顺序统计量 C++实现

chapter9.h #ifndef CHPATER9_H #define CHAPTER9_H // clrs chapter 9--medians and order statistics //...

算法导论:第9章 中位数和顺序统计量_1期望为线性时间的选择算法

/* 线性时间选择算法: 含义:是解决选择问题的分治算法 与快速排序不同的是:快排递归处理划分的两边,而线性选择只对其中 的一个部分进行处理 时间复杂度:O(n) 实现:需要用到随机划分函数 主要的过...

中位数和顺序统计量(第9章)

学习由n个不同的树的集合中选择第i个顺序统计量的问题。 输入:一个包含nn个(互异的)数的集合AA,1≤i≤n1 \leq i \leq n的整数i。 输出:元素x∈Ax \in A,并且 AA...

算法导论:第9章 中位数和顺序统计量_2最坏情况为线性时间的选择算法

本文参考这位作者的思想,其blog地址:http://blog.csdn.net/whispermyname/article/details/6667690  但与他的实现不完全相同,上述测试用例全部...

【算法导论】中位数和顺序统计量之选择算法

本文阐述了如何使用期望和线性时间的选择算法求得第i顺序统计量,欢迎拍砖!...

《算法导论》笔记系列之第九章中位数和顺序统计量

在一个由n个元素组成的集合中,第i个顺序统计量,是该集合中第i小的元素。9.1讨论了数组的最小值和最大值。 如果要找出数组的最小值,可以通过至多n-1次比较得出。最大值相同。 但若要求同时找出最大...

中位数和顺序统计量---算法导论学习笔记

算法导论断断续续看了一小部分,但是还没有写过总结和笔记,很多思考和学习到的东西都随着时间流失掉了(痛心)。 下面进入正题: 1.最大值和最小值问题 ...
  • miaote
  • miaote
  • 2016年11月05日 21:05
  • 364

算法导论 第九章 中位数和顺序统计量

def:第i个顺序统计量,是该集合中第i小的元素。 def:选择问题:输入,一个包含n个数的集合A,和一个整数i, 1 9.1 最大值和最小值 寻找一个数组中的最大值和最小值需要经过n-1次比较找...

第 9 章 中位数和顺序统计量

在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素。例如,在一个元素集合中,最小值是第 1 个顺序统计量,最大值是第n个顺序统计量(i=n)。用非形式化的描述来说,一个中位数是它所属...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:第9章:中位数和顺序统计量
举报原因:
原因补充:

(最多只允许输入30个字)