算法導論 第一章 插入與歸并排序

算法排序:input:sequence 《a1,a2,a3…..an》output: permutation 《a11,a22,a33,..ann》$ a110

?insertion sort


Insertioon-Sort(A,n) //Sorts A[1..n]? ? peusocode

for j<—2 to n

? ?do? ? key <—A[j]

? ? ? ? ? ?i<—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]

start j = 2;

…..

[2,3,4,6,8,9]

Running time

—depends on input (e.g. already sorted)

—depends on input size (6 elem vs 6*10^9)

—parameter in input size

—Want upper bounds

Kinds of analysis

Worst -case(usually)

T(n) = max time on any input of size n

Average-case(sometimes)

T(n)=expected time overall input of size n

(Need assumption of stat distribution——equal )

Best-case(bogus)

Worst -case

—relative speed

—absolute speed

Big Idea? Asymptotic analysis

1.Ignore machine dependent

2.Look at growth of T(n) as n->oo

Asymptotic notation

Big O (theta notation) Drop low order terms Ignore leading constants

EX:3n^3 + 90 n^2-5n + 6046=Theta(n^3)

Insertion sort analysis

Worst -case: input reverse sorted

T(n)=qiuhe (j <—2–n)O(j) = O(n^2)

Is Insertion fast?? Not for large n

Merge sort

Merge sort A[1..n]? ? T(n)

1.if n = 1 ,done? ? //Theta(1)

2.Recursive sort? //2T(n/2)

A[1..n/2] and A[n/2+1…n]

3.Merge 2 sorted list? //Theta(n)

Key subroutine? Merge

Time = Theta(n) Linear time

Recurrence

T(n) ={ theta(1) if n=1;? 2T(n/2)+O(n) if n >1}

Recursion Tree T(n) = 2T(n/2)+c*n (c>0)

T(n) = cn? =? ? ? ? ? ? ? ? ? cn =……? =? ? ? ? cn? ? cn

/? ? \? ? ? ? ? ? ? ? ? /? ? ? \? ? ? ? ? ? ? ? ? ? ? ….? ? cn

T(n/2) T(n/2)? ? cn/2? ? cn/2? ? ? ? ? ? O(1)? ? O(n)

/? ? \? ? ? ? /? ? \

T(n/4) T(n/4) T(n/4) T(n/4)

Height of the tree is lg(n)? leaves = n

Total = cn * lg(n) + O(n)= O(n*lg(n))

bounds is 30

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

  • 背景 一年多以前我在知乎上答了有關LeetCode的問題, 分享了一些自己做題目的經驗。 張土汪:刷leetcod...
    土汪閱讀 12,936評論 0 33
  • 不支持上傳文件,所以就復制過來了。作者信息什么的都沒刪。對前端基本屬于一竅不通,所以沒有任何修改,反正用著沒問題就...
    全棧在路上閱讀 2,074評論 0 2
  • “不”有很多不同意思,有人為了證明自己而向別人說不,比如有個人把一件事情委托給另一個人,而有些人會在旁邊嘲諷他:“...
    百合花楊貽宸閱讀 252評論 0 1
  • 又是一年高考季。分數下來后,就是填志愿了。我也是一枚高三結束的學生,填志愿前,很多人問我,同等學校的話,志愿到底是...
    栗小鮮閱讀 622評論 6 2
  • https://www.zhihu.com/question/29878968/answer/141238985 ...
    靖蘭亭閱讀 565評論 0 51

友情鏈接更多精彩內容