主定理

主定理.png

應用

二分搜索

  • 每次問題規模減半,a=1,b=2,d=0
  • 復雜度為n^0 log(n) = log(n)。

快速排序

  • 隨機選擇待排序序列中的一個數字作為劃分字問題的標準,劃分是否平均影響算法復雜度
  • 快速排序在每次平分的情況下,每次劃分的代價都是O(n)
  • 每次問題規模減半,a=2,b=2,d=1
  • 復雜度為n log(n)
  • 最差情況下,復雜度為O(n^2)

歸并排序

  • 數據列均分為兩部分,分別排序,之后以O(n)的復雜度進行合并,空間復雜度O(n)
  • 每次問題規模減半,a=2,b=2,d=1
  • 復雜度為n log(n)

順序統計量問題

T(n)=T(n/2)+O(n)
O(n):和快速排序的劃分過程一樣
期望復雜度:O(n)

基數排序(Radix sort)

  • 對于待排序的整數序列,從最低位到最高位每次按照相應的位排序一次
  • 每次遞歸問題規模變為原來的1/10,但需要求解10個子問題,額外運算為O(n)的,a=10,b=10,d=1
  • 復雜度為n^1 log(n) = n log(n),近似為O(kN),k為整數的位數

快速傅里葉變換:FFT

  • 每次問題規模減半,a=2,b=2,d=1
  • 復雜度為n log(n)

Karatsuba快速乘法

  • 正常兩個n位數乘法為n^2
  • 算法把兩個乘數各分為高低位兩部分,如X*Y = (a+b) * (c+d) = ac+bd + (bc+ad) = ac+bd+(ac+bd - (a-b)(c-d)) 只需要ac,bd,(a-b)(c-d)三次乘法
  • 每次問題規模減半,但需要解3個子問題,加法是O(n)的,a=3,b=2,d=1 復雜度為n^log2(3)

轉載于http://blog.csdn.net/caozhk

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。