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

算法导论思考题

2-1 在归并排序中对小数组采用插入排序
c. 假定修改后的算法的最坏情况运行时间为 Θ \Theta Θ(nk+nlg(n/k)),要使修改后的算法与标准的归并排序具有相同的运行时间,作为n的一个函数,借助 Θ \Theta Θ记号,k的最大值是什么?
假定k= Θ \Theta Θ(lg n), Θ ( n k + n l g ( n / k ) ) = Θ ( n k + n lg ⁡ n − n lg ⁡ k ) = Θ ( n lg ⁡ n + n lg ⁡ n − n lg ⁡ ( lg ⁡ n ) ) = Θ ( 2 n lg ⁡ n − n lg ⁡ ( lg ⁡ n ) ) \begin{aligned}\Theta(nk+nlg(n/k))&=\Theta(nk+n\lg n-n\lg k)\\ &=\Theta(n\lg n+n\lg n-n\lg (\lg n))\\ &=\Theta(2n\lg n-n\lg (\lg n)) \end{aligned} Θ(nk+nlg(n/k))=Θ(nk+nlgnnlgk)=Θ(nlgn+nlgnnlg(lgn))=Θ(2nlgnnlg(lgn))
当n趋近于无穷大时,lg n的增长速度远快于lg(lg n),所以后者可忽略,上式写为 Θ \Theta Θ(nlg n)
2-2
BUBBLESORT(A)
1 for i=1 to A.len-1
2 \quad for j=A.len downto i+1
3 \qquad if A[j]<A[j-1]
4 \qquad\quad exchange A[j] with A[j-1]
b. 为2~4行的for循环精确地说明一个循环不变式
在每次迭代开始时,子序列A[j…n]可能以不同的顺序由原来A[j…n]的元素组成,并且A[j]是其中最小的


http://www.mrgr.cn/news/99157.html

相关文章:

  • WInform当今技术特性分析
  • Java中的锁
  • Matplotlib的应用
  • (一)mac中Grafana监控Linux上的CPU等(Node_exporter 安装使用)
  • STM32的三种启动方式
  • 安卓学习24 -- 网络
  • AnimateCC基础教学:制作一个打地鼠简化版
  • 06 GE Modifier
  • 使用注解方式整合ssm时,启动tomcat扫描不到resource下面的xxxmapper.xml问题,解决方法
  • dawgctf 2025 writeup
  • 从零起步的Kaggle竞赛 - BirdCLEF2025
  • Python多任务编程:进程全面详解与实战指南
  • 实现AWS Lambda函数安全地请求企业内部API返回数据
  • 【C++详解】C++入门(一)命名空间、缺省参数、函数重载
  • Linux安装mysql_exporter
  • 第 28 场 蓝桥月赛
  • 线性DP:最长上升子序列(子序列可不连续,子数组必须连续)
  • C++ 模块化编程(Modules)在大规模系统中的实践难点
  • acwing--动态规划【线性dp】4/20、4/21
  • 大数据应用开发——大数据平台集群部署(四)