Introduction to Algorithms FirstLession Theta & Insertion Sort & Merge Sort

Teacher:PHD Charles E.Leiserson

Point One Theta or θ

当出现高阶项时,只要变量足够大,可以去掉低阶项。
因为n足够大,低阶项对结果的影响远不足高阶项。
参考Charles的例子,eg
θ = 8 n 3 + 90 n 2 + 6046 θ= 8n^3+90n^2+6046 θ=8n3+90n2+6046
当n足够大时(n->∞)上例约等于:
θ = n 3 ( n − > ∞ ) θ = n^3 ( n ->∞) θ=n3(n>)

Point Two Insertion Sort

参考Charles的例子 eg:
54321 5 4 3 2 1 54321
45321 45321 45321
34521 34521 34521
23451 23451 23451
12345 12345 12345

插入排序,每次新插入一个元素时,都会在已有序数组中找到其位置,保证已有序数组保持有序,每次增长单位为1。

详细解读:
第一层遍历是遍历n个数 T(n)
第二层是在已有序数组内部遍历,找到新插入元素的位置 (1+2+…n)

所以时间复杂度是:

T ( n ) = n ( 1 + 2 + 3 + . . . n ) = ∑ j n θ ( j ) ( j : 2 − n ) T(n) = n(1+2+3+...n)=∑_j^n θ (j)(j:2-n) T(n)=n(1+2+3+...n)=jnθ(j)(j:2n)
只保留高阶项:
T ( n ) = n 2 T(n)=n^2 T(n)=n2

Point Three Merge Sort

归并排序是将n个元素拆为2个n/2个元素的有序集合,然后合并2个有序集合。

543128 543128 543128
拆开为2个有序集合(345)和(128),单个集合排序的时间复杂度为T(n/2)

5 8
4 2
3 1
归并时1->2->3->4->5->8。注意指针在2个集合间移动的轨迹。时间复杂度θ(n)

归并排序时间复杂度分支公式:
T ( n ) = { 1 , n = 1 2 T ( n / 2 ) + θ ( n ) + C n , n > 1 T(n)=\begin{cases} 1,\quad n= 1\\ 2T(n/2)+θ(n)+Cn, \quad n>1 \end{cases} T(n)={1,n=12T(n/2)+θ(n)+Cn,n>1
根据条件
C n = 2 T ( n / 2 ) Cn=2T(n/2) Cn=2T(n/2)
C n / 2 = T ( n / 2 ) Cn/2 = T(n/2) Cn/2=T(n/2)

在这里插入图片描述
上图中树的高度为lgN,每层的总和为Cn。(N=n)
所以树的总和为Cn*lgN。

简化公式:
T ( n ) = { 1 , n = 1 C n ∗ l g n + θ ( n ) = θ ( n l g n ) , n > 1 T(n)=\begin{cases} 1,\quad n= 1\\ Cn*lgn+θ(n)=θ(nlgn), \quad n>1 \end{cases} T(n)={1,n=1Cnlgn+θ(n)=θnlgnn>1

ps:
根据以上推导可以知道MergeSort比InsertionSort快。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值