數(shù)組:所謂數(shù)組,是無序的元素序列。數(shù)組中的所有元素都具有相同類型(這一點和結(jié)構(gòu)或類中的字段不同,它們可以是不同類型)。數(shù)組中的元素存儲在一個連續(xù)性的內(nèi)存塊中,并通過索引來訪問(這一點也和結(jié)構(gòu)和類中的字段不同,它們通過名稱來訪問)。
鏈表:鏈表是一種物理存儲單元上非連續(xù)、非順序的存儲結(jié)構(gòu),數(shù)據(jù)元素的邏輯順序是通過鏈表中的指針鏈接次序?qū)崿F(xiàn)的。鏈表由一系列結(jié)點(鏈表中每一個元素稱為結(jié)點)組成,結(jié)點可以在運行時動態(tài)生成。每個結(jié)點包括兩個部分:一個是存儲數(shù)據(jù)元素的數(shù)據(jù)域,另一個是存儲下一個結(jié)點地址的指針域。 相比于線性表順序結(jié)構(gòu),操作復雜。由于不必須按順序存儲,鏈表在插入的時候可以達到O(1)的復雜度,比另一種線性表順序表快得多,但是查找一個節(jié)點或者訪問特定編號的節(jié)點則需要O(n)的時間,而線性表和順序表相應的時間復雜度分別是O(logn)和O(1)。鏈表有很多種不同的類型:單向鏈表,雙向鏈表以及循環(huán)鏈表。
鏈表擅長插入刪除,數(shù)組擅長隨機訪問。
選擇排序:#
選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數(shù)據(jù)元素中選出最小(或最大)的一個元素,存放在序列的起始位置,直到全部待排序的數(shù)據(jù)元素排完。 選擇排序是不穩(wěn)定的排序方法(比如序列[5, 5, 3]第一次就將第一個[5]與[3]交換,導致第一個5挪動到第二個5后面)。