当前位置: 首页 > news >正文

算法导论第9章思考题

9.1-1 证明:在最坏情况下,找到n个元素中第二小的元素需要n+ ⌈ lg ⁡ n ⌉ \lceil\lg n\rceil lgn-2此比较。(提示:可同时找最小元素)
先进行n-1次比较,每次比较中较大的数可能是第二小的元素
9.3-3 假设所有元素互异,说明在最坏情况下,如何才能使快排的运行时间为O(nlg n)
通过快速选择选取中位数作主元
9.3-7 设计一个O(n)时间的算法,对于一个给定的包含n个互异元素的集合S和一个正整数k<=n,该算法能确定S中最接近中位数的k个元素
在O(n)时间内找到中位数,用一个新数组存储其它元素与中位数的差值的绝对值。然后在O(n)时间内找到第k小的元素,输出小于等于此值的元素
9.3-8 设X和Y为两个数组,都包含n个有序的元素。请设计一个O(lg n)时间的算法来找出X和Y中所有2n个元素的中位数

MEDIAN(X, Y, n)if n == 1return min(X[1], Y[1])if X[n / 2] < Y[n / 2]return MEDIAN(X[n / 2 + 1..n], Y[1..n / 2], n / 2)return MEDIAN(X[1..n / 2], Y[n / 2 + 1..n], n / 2)

9-3
a. 设计一个能用U i _i i(n)次比较在n个元素中找出第i小元素的算法,其中,U i _i i(n)= { T ( n ) 若 i ⩾ n 2 ⌊ n 2 ⌋ + U i ( ⌈ n 2 ⌉ ) + T ( 2 i ) 其他 \left\{\begin{aligned}&T(n)&&若i\geqslant{n\over2}\\ &\lfloor{n\over2}\rfloor+U_i(\lceil{n\over2}\rceil)+T(2i)&&其他 \end{aligned}\right. T(n)2n+Ui(⌈2n⌉)+T(2i)i2n其他
(提示:从 ⌊ n 2 ⌋ \lfloor{n\over2}\rfloor 2n个不相交对的两两比较开始,然后对由每对中的较小元素构成的集合递归)

function SELECT(A, i):n=|A|if n <= 2i:return LINEAR_SELECT(A, i)  // O(n) 选择算法// Step 1: 分成 ⌊n/2⌋ 对,比较得到 S(较小者)pairs = split A into ⌊n/2⌋ disjoint pairsS = []for each pair (a, b) in pairs:if a < b:S.append(a)else:S.append(b)if n is odd:S.append(remaining element)// Step 2: 在 S 中递归找第 i 小的元素 xreturn SELECT(S, i)

9-4 假设所有的元素互异,输入数组的元素被重命名为z 1 _1 1,z 2 _2 2,…,z n _n n,其中z i _i i是第i小的元素。对所有1 ⩽ \leqslant i<j ⩽ \leqslant n,设X i j k _{ijk} ijk=I{在查找 z k z_k zk期间,z i _i i和z j _j j进行过比较}
a. 给出E[X i j k _{ijk} ijk]的准确表达式。(提示:表达式可能有不同的值,依赖于i、j、k的值)
E[X i j k _{ijk} ijk]= { 2 j − i + 1 若 i < k < j 0 其他 \left\{\begin{aligned}&2\over{j-i+1}&&若i<k<j\\ &0&&其他 \end{aligned}\right. ji+120i<k<j其他

相关文章:

  • 【c++】【数据结构】二叉搜索树详解
  • 数码管模块
  • 【Linux篇】高并发编程终极指南:线程池优化、单例模式陷阱与死锁避坑实战
  • M. Moving Both Hands(反向图+Dijkstra)
  • 蓝桥杯14届国赛 合并数列
  • Spyglass:在batch/shell模式下运行目标的顶层是什么?
  • 【project】--数据挖掘
  • Docker 部署 - Crawl4AI 文档 (v0.5.x)
  • 【TI MSPM0】CCS工程管理
  • 【LwIP源码学习6】UDP部分源码分析
  • 研修室智慧化升级实践:线上预约+智能门锁的融合方案
  • 高级数据结构:线段树
  • Problem B: 面向对象综合题2
  • LLM框架
  • 【Diffusion】在华为云ModelArts上运行MindSpore扩散模型教程
  • 基于SpringBoot的抽奖系统测试报告
  • 11、参数化三维产品设计组件 - /设计与仿真组件/parametric-3d-product-design
  • Linux-TCP套接字编程简易实践:实现EchoServer与远程命令执行及自定义协议(反)序列化
  • 基于物联网的智能家居监控系统设计和实现(源码+论文+部署讲解等)
  • OpenWrt开发第8篇:树莓派开发板做无线接入点
  • 超新星|18岁冲击中超金靴,王钰栋的未来无限可能
  • 民企老板被错羁212天续:申请国赔千万余元,要求恢复名誉赔礼道歉
  • 被流量绑架人生,《人生开门红》能戳破网络时代的幻象吗
  • 均价19.5万元/平米!上海徐汇滨江地王项目“日光”,销售额近70亿元
  • 中美经贸高层会谈11日在日内瓦将继续进行
  • 印巴战火LIVE丨“快速接近战争状态”:印度袭击巴军事基地,巴启动反制军事行动