/*
* 算法导论 第九章 中位数和顺序统计学
* 线性时间选择元素
*/
#include
#include
using namespace std;
int minimum(int *arr, int len);
int randomizedSelect(int *arr, int p, int r, int i);
int randomizedPartition(int *ar...
分类:
其他好文 时间:
2014-08-18 18:32:42
阅读次数:
208
顺序统计量(选择问题)定义 在一个由n个元素组成的集合中,第i个顺序统计量是该集合中第i小的元素,例如,在一个元素集合中,最小值是第一个顺序统计量(i = 1),最大值是第n个顺序统计量(i = n)。查找最小值 在一个有n个元素的集合中,需要做多少次比较才能确定其最小元素呢?一个简单的思路就是:依...
分类:
其他好文 时间:
2014-08-02 15:20:33
阅读次数:
302
在红黑树基础上利用区间树与顺序统计树来求最大重叠点,就是被最多数目区间覆盖的那个点。...
分类:
其他好文 时间:
2014-07-18 12:32:12
阅读次数:
249
package chap09_Medians_and_Order_Statistics;import
static org.junit.Assert.*;import java.util.Random;import org.junit.Test;public
class SearchAlorithm...
分类:
其他好文 时间:
2014-06-12 17:26:37
阅读次数:
316
问题
给定N个元素的数组,求第k大的数。
特例
当k=0时,就是求最大值,当k=N-1时,就是求最小值。
应用
顺序统计
求top N排行榜
基本思想
使用快速排序方法中的分区思想,使得a[k]左侧没有更小的数,右侧没有更大的数
性能
快速选择算法的复杂度...
分类:
其他好文 时间:
2014-06-08 09:58:08
阅读次数:
211
算法导论读书笔记(16)目录动态顺序统计检索具有给定排序的元素确定一个元素的秩区间树步骤1:基础数据结构步骤2:附加信息步骤3:维护信息步骤4:设计新操作动态顺序统计之前介绍过
顺序统计 的概念。在一个无序的集合中,任意的顺序统计量都可以在 O ( n )时间内找到。而这里我们将介绍如何在 O ( ...
分类:
其他好文 时间:
2014-05-30 23:14:23
阅读次数:
338
找出一个数组的最大值和最小值是比较容易的,我们只需遍历一次数组即可。但是寻找一个数组的第i小或者第i大,就需要一些技巧使得查找的时间尽可能小。随机化划分选择算法是一个时间复杂度为O(n)的算法。int
fIndmax(int a[],int p,int r,int i){ if(p==r) ...
分类:
其他好文 时间:
2014-05-30 01:57:38
阅读次数:
269
最直观的解法,排序之后取下标为k的值即可。但是此处采取的方法为类似快速排序分块的方法,利用一个支点将序列分为两个子序列(支点左边的值小于支点的值,支点右边大于等于支点的值)。如果支点下标等于k,则支点就是查找的值,如果支点的下标大于k,则在左子序列里继续寻找,如果支点下标小于k,则继续在支点右子序列...
分类:
其他好文 时间:
2014-04-28 14:20:26
阅读次数:
458