博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
算法导论,第一节第二节课总结
阅读量:5051 次
发布时间:2019-06-12

本文共 801 字,大约阅读时间需要 2 分钟。

10月26号在看MIT算法导论的公开课,当天看完了前两节课,并于当晚写了总结。但不知道为什么,博客园并没有把我当时写的内容保留下来。所以现在,我重新温习下第一节第二节课的内容,并将其主要思想写在下面。

课程是以插入排序作为引言的,插入排序的主要思想是将下一个未知的数字与前面已经排序好的数列依次进行比较,当发现自己适合的位置时,就插入对应的位置(其具体的实现已经在另外一篇博客中实现)。分析表明,插入排序的时间复杂度为O(n2)。

然后老师提供了另外的一种排序方法——归并排序。归并排序算法的时间复杂度是O(nlgn)(具体实现待会写在博客里面),老师由归并排序引出了递归的思想,并引出了递归树(recurrence tree)的概念。

现证明T(n)=4T(n/2)+n=O(n2)

假设存在常数a,b,对于任意的k<n,有T(k)<an2-bn,也就是说:

T(n)=4T(n/2)+n

  =4*[a(n/2)2-b*n/2]+n

  =a*n2-bn+(1-b)n

所以当b>1时,有T(n)<an2-bn。(当然,要注意因为当n=1时,要保证a-b>T(1)成立,即要a>b+T(1))。

Master Method:有递归表达式T(n)=aT(n/b)+f(n)

(1)当f(n)=O(nlogba/nε)时,会有T(n)=Θ(nlogba)。

(2)当f(n)=Θ(nlogba*(lgn)k),则有T(n)=Θ[nlogba*(lgn)k+1]

(3)当f(n)=Ω(nlogba*nε)&af(n/b)<(1-ε')f(n),则有T(n)=Θ(f(n))。

由这个主定理可以推断出很多东西,比如mergesort T(n)=2T(n/2)+Θ(n) 则 T(n)=Θ(nlgn)。

转载于:https://www.cnblogs.com/qifengle/p/4920882.html

你可能感兴趣的文章
Equal Sides Of An Array
查看>>
CentOS笔记-用户和用户组管理
查看>>
Mongodb 基本命令
查看>>
Qt中QTableView中加入Check列实现
查看>>
“富豪相亲大会”究竟迷失了什么?
查看>>
控制文件的备份与恢复
查看>>
返回代码hdu 2054 A==B?
查看>>
Flink独立集群1
查看>>
iOS 8 地图
查看>>
20165235 第八周课下补做
查看>>
[leetcode] 1. Two Sum
查看>>
iOS 日常工作之常用宏定义大全
查看>>
PHP的SQL注入技术实现以及预防措施
查看>>
MVC Razor
查看>>
软件目录结构规范
查看>>
Windbg调试Sql Server 进程
查看>>
linux调度器系列
查看>>
mysqladmin
查看>>
解决 No Entity Framework provider found for the ADO.NET provider
查看>>
SVN服务器搭建和使用(三)(转载)
查看>>