首页 > 编程语言 > 详细

算法测试一复习

时间:2020-01-24 15:41:29      阅读:78      评论:0      收藏:0      [点我收藏+]

【算法正确性】所有的输入,都能停止,并有有正确的输出

【算法选择】易懂:),优雅:),高效:)(时间+空间)

【插入排序】左边的永远是已经拍好序的best case: T(n) = an + b; worst case: T(n) = an^2 + bn + c

【θ】θ(g(n)) = {f(n) | Exist positive constant: c1, c2, n0 && 0 <= c1g(n) <= f(n) <= c2g(n) for all n >= n0 }

  考虑:n -> 无限大;f(n) 的增长速率与 g(n) 一致

练习一:

1) non-increasing insertion sort(这里伪代码的index从1开始算)

insertion_sort(L)

    for j = 2 to L.length     // index 2 - n

    key = A[j]

    i = j - 1         // 5 4 3 2 1 -> j = index2, i = index1

    while i > 0 and L[i] > key: // 当i大于0, 且当左边的数字大于key的时候

        L[i+1] = L[i]   // 将较大的i赋值给i+1, 即它右边相邻的数字 5 5 3 2 1

        i = i - 1      // 比较左边的数直到index1 - 1 = 0

    L[i + 1] = key      // 将key赋给i右边的值

排序例子:{30, 40, 55, 23, 41, 52}  // key的位子加粗表示,但存在key里

30 40 55 23 41 52

30 40 55 23 41 52

30 40 55 23 41 52 -> 30 40 55 55 41 52 -> 30 40 40 55 41 52 -> 30 30 40 55 41 52 -> 23 30 40 55 41 52 

23 30 40 55 41 52 -> 23 30 40 55 55 52 -> 23 30 40 41 55 52 

23 30 40 41 55 52  -> 23 30 40 41 55 55 -> 23 30 40 41 52 55

【定理】对于任何f(n), g(n), f(n) = θ(g(n)) <=> f(O(g(n))) && f(Ω(g(n)))

传递性
f(n) = Θ(g(n)) && g(n) = Θ(h(n)) -> f(n) = Θ(h(n))

f(n) = O(g(n)) && g(n) = O(h(n)) -> f(n) = O(h(n))

f(n) = Ω(g(n)) && g(n) = Ω(h(n)) -> f(n) = Ω(h(n))
自反性
f(n)=Θ(f(n)), f(n)=O(f(n)), and f(n)=Ω(f(n))

对称性
f(n) = Θ(g(n)) <=> g(n) = Θ( f(n))

f(n) = O(g(n)) <=> g(n) = Ω( f(n))

    

 

算法测试一复习

原文:https://www.cnblogs.com/programmingdrifter/p/12232242.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!