MIT算法导论笔记第一课

有什么比起性能更重要呢? 简洁,费用?性能决定了程序是可行还是不可行。性能保证了用户体验的前提。java的性能弱于C语言3倍!,震惊了。。

1.Problem sorting

Input segment <a1,a2,...,an>

Output permutation <a1',a2',...an'>
$ a1'<=a2'<=....<=an'

1.1 插入排序

伪代码(pseudocode)

Insertion sort(A,n)
for j <- 2 to n
  do key <- a[j]
    int <- j-1
    while i>0 and A[i]>key
    do A[i+1]<-a[i]
    i<-i-1
    A[i+1]<-key  

Ex 8 2 4 9 3 6
2 8 4 9 3 6
2 4 8 9 3 6
2 3 4 8 9 6
2 3 4 6 8 9
running time,根据输入数据来决定,一般来说都会去计算该值的最大值(upper bounds),即时间复杂度T(n),

1.2 渐进分析

  1. 不去关注依赖于计算机本身的常量
  2. 只关注运行时间的增加
    渐近符号:θ,举个例子当存在3n^2+2n, n->∞,则其近似于θ(n^2)。
    回到上述的插入排序,可知,其时间复杂度为θ(n^2)
    1.3 归并排序(merge sort)
merge sort A[1,2,...,n]
1.if n=1, done
2.recursively sort
A[1...n/2] and A[n/2...n]
3.merge 2 sorted lists

当n->∞,其时间复杂度为θ(nlogn)。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值