算法week4---algorithms-divide-conquer--part1(RSelect)

13人阅读 评论(0) 收藏 举报
  1. Randomized Selection
    1.1 R Select (array A, length n, order statistic i)
    (0): if n =1 return A[1]
    (1):choose pivot p from A uniformly at random.
    (2):partition A around p;
    let j = new index of p
    (3): if j=i, return p;
    (4): if j > i, return RSelect (1st part of A, j-1, i)
    (5):if j > i , return RSelect(1st part of A, j-1, i)
    (6):if j < i: return RSelect(2nd part of A, n-j, i-j)
  2. Running Time of RSelect
    2.1 RSelect Theorem: for every input array of length n, the average running time of RSelect is O(n).
    2.2 Tracking Progress via Phases.
    Note: RSelect uses <=cn operations outside of the recursive call [for some constant c > 0]
    Notation: RSelect is in phase j if current array size between (34)j+1n and (34)jn.
    Xj= numbers of recursive calls during phase j.
    Note: running time of RSelect <=phasejXjc(34)jn
    (1) (34)jn : <= array size during phase j
    (2) c(34)jn: work per phase j subproblem.
    (3)Xj:of phase -j subproblems.
    2.3 Proof II: Reduction to Coin Flipping
    Xj :# of recursive calls during phase j
    Note: if RSelect choose a pivot giving a 25%75% spltit (or better): then current phase ends!(new subarray length at most 75% of old length).
    Recall: probability of 25%75%split or better is 50%.
    So: E[xj]<=expected number of times you need to flip a fair coin to get one “head”.
    (headsgoodpivot,tailsbadpivot)
    2.4 Proof III: Coin Flipping Analysis
    Let N= number of coin flips until you get heads
    (a “geometric random varible”)
    Note:E[N]=1+1αE[N]
    1: 1st coin flip.
    1α: probablity of tails
    E[N]: # of further coin flips needed in this case.
    Solution: E[N]=α (Recall E[xj]<=E[N])
    expected running time of RSelect:
    (2)E[cnphasej(34)jXj]cnphasej(34)jE[Xj]2cnphasej(34)j8cn=O(n)

    其中: E(ofcoinflipsN)=2
    phasej(34)j1134=4
查看评论

Quick Select Algorithm 快速选择算法

什么是Quick select? Quick select算法通常用来在未排序的数组中寻找第k小/第k大的元素。其方法类似于Quick sort。Quick select和Quick sort都是由T...
  • Yaokai_AssultMaster
  • Yaokai_AssultMaster
  • 2017年03月31日 04:38
  • 4117

实现 select * [except column] from tableName

问题描述:有特定环境下,我们也许只知道某一列(或几列),而想获得除此列(几列)外的所有列的数据。 如已知如下circle表 可能只知道有一列(flag),欲获得除此列之外的数据。 预期结...
  • ShuTear
  • ShuTear
  • 2013年01月02日 17:37
  • 3124

oracle 回滚段数据文件损坏修复

以下内容转自:http://lovexueer.itpub.net/post/5072/4924112月26日(星期一)  测试环境:OS :XPDB:9201 本测试测试了如下情况:a.正常关闭数据...
  • peihexian
  • peihexian
  • 2008年03月03日 15:58
  • 2601

算法算法算法尼玛

一定要抽时间好好看下。。。丫的 头疼死了
  • evi10r
  • evi10r
  • 2011年08月07日 10:12
  • 878

算法 + 算法 = 新算法

道生一,一生二,二生三,三生万物。—道德经 我们都知道,基础的搜索算法有深搜DFS和广搜BFS。它们的搜索效率都差不多,都是O(E)。只是对于不同的搜索特点,有各自适用场合。 假如有这样一棵树,...
  • mishifangxiangdefeng
  • mishifangxiangdefeng
  • 2015年10月24日 15:43
  • 2212

算法!算法!算法!

原文地址:算法!算法!算法!作者:jorchid最近在复习算法,写点东西。   一、分治 什么是分治?嗯……4个人打牌,发现丢了一张牌,是哪张呢?如果你是这样解决的:把牌分成四份分别给四个人,每个人...
  • fandongguang0702
  • fandongguang0702
  • 2016年06月26日 10:47
  • 174

算法 Bellman-Ford算法,Johnson算法

算法  Bellman-Ford算法, 依次对顶点执行relax松弛操作 依次对边执行判断 如果对所有边(终点的最短路径估计==起点的最短路径估计+此边权重) 则说明无权重为负的环路 Jo...
  • jerryzcx
  • jerryzcx
  • 2014年03月27日 21:10
  • 504

linux select检测连接断开

select函数可以用来监听多个socket连接。但是单纯select不能检检测连接断开的情况。可以配合recv函数来检测远程主机主动断开的情况。 远程主机断开后,select会立即返回(返回值大于...
  • xiaoanian
  • xiaoanian
  • 2013年04月24日 11:43
  • 1787

Algorithms4 《算法》第四版 内容整理第一章干货

1.1 基础编程模型1.1.1 java程序基本结构 原始数据类型:整型(int),浮点型(double),布尔型(boolean),字符型(char) 语句:声明,赋值,条件,循环,调用,返回。 数...
  • qq_28954371
  • qq_28954371
  • 2016年10月31日 16:27
  • 3171
    个人资料
    持之以恒
    等级:
    访问量: 163
    积分: 175
    排名: 109万+
    博客专栏
    文章分类
    文章存档