上一課講了陣列,這節課順利過渡到了陣列的查詢、排序。
即查詢演算法、排序演算法。
關於查詢演算法,除了常見的linear search ,binary search ,還有好多好多。下面是常見的七大查詢演算法:
順序查詢
二分查詢
插值查詢
斐波那契查詢
樹表查詢
分塊查詢
雜湊查詢
排序演算法,除了氣泡排序、插入排序、歸併排序,還有很多很多其他的排序演算法。(見維基百科- 排序演算法)
講到演算法,課中自然提到的演算法複雜度,o、ω、θ 這些記號。
o表示上界,即最壞情況下需要執行的時間(步)。
ω表示下界,即最好情況下需要執行的時間(步)。
θ表示準確界限,o=ω時,可以用θ表示。
網上有許多排序演算法、查詢演算法複雜度的總結。
可以參考:每個程式設計師都應該收藏的演算法複雜度速查表
關於這些演算法的實現,可需要一些時間。
以前的幾篇筆記有了部分python的實現,這裡就不寫了,以後會另外總結的。
CS50 2016 Week 0 學習筆記
今天開始從第一課開始學習了。week 0 和大學裡許多的第一節課一樣,只是簡單介紹這門課,沒有太多乾貨。有幾個知識點,比較重要。機器語言,即計算機能直接理解的語言,只有0 和 1 二進位制數 通過字元編碼,能用不同的數字表示不同的字元,能用二進位制數來表示我們熟悉的字元。乙個位元組儲存8個二進位制數...
CS50 2016 Week 2 學習筆記
這一課先講了除錯程式 debug 然後講了 正確性 設計 風格,最後講了陣列的概念。核心思想是程式報錯後,能找到哪兒錯了,怎麼錯的。如果是語法錯誤,根據報錯資訊,大概能找到怎麼錯的。如果是邏輯錯誤,可以自己在腦海中過一遍程式執行的流程,看哪兒有邏輯錯誤,或者自己在可能有問題的地方寫測試 c語言軟體中...
CS50 2016 Week4 學習筆記
以下內容摘抄自 c語言程式設計 第9章 根據馮諾依曼提出的 儲存原理 的計算機工作原理,程式要裝入記憶體後才能進行處理,資料也要裝入記憶體才能進行處理。記憶體是以位元組為單位的一片連續儲存空間,每個位元組都有唯一的編號,這個編號稱為記憶體的 位址 如同人們通過房間號來管理旅館一樣,系統通過記憶體位址...