《演算法圖解》NOTE 2 陣列、連結串列及選擇排序
這是《演算法圖解》的第二篇讀書筆記,內容主要涉及陣列、連結串列及選擇排序。
1.陣列
1.1定義
作為一種基礎的資料結構,陣列指的是n個元素按照索引號依次存放在一個記憶體區域的資料結構。其中,索引號相鄰的元素在記憶體的位置也是相鄰的。
1.2優缺點
1.2.1優點
支援隨機訪問。即可根據索引號訪問與之對應的元素,從而實現快速訪問陣列中的元素。
1.2.2缺點
(1)刪除、插入元素慢。若要刪除或插入元素,則需移動制定元素後面的所有元素。
(2)有溢位的可能。陣列的記憶體不足後,需要將整個陣列遷移至容量更大的記憶體中。
1.3適用範圍
需要快速訪問元素、但對插入、刪除元素的速度要求不高的場景。
2.連結串列
2.1定義
一種基礎資料結構,每個元素除了記錄自身的值,還會記錄下一個元素的記憶體地址。
2.2優缺點
2.2.1優點
支援快速插入、刪除元素。插入、刪除元素的操作簡單。只需改變特定元素所指向的記憶體地址,使其指向插入的元素或被刪除元素所指向的元素。
2.2.2缺點
不支援快速訪問元素,需要從連結串列的第一個元素,依次訪問後續的元素,以找出目標元素。
2.3適用範圍
需要快速插入、刪除元素,但對查詢元素的時效性要求較低的場合。
3.選擇排序法
3.1實現原理
遍歷其全部元素,找出其最大(最小)的元素。將其從原來的陣列中移至新的資料結構中。再從剩餘的元素中找出最大(最小)的元素,重複上述移動元素的步驟,直至原來的資料結構中的元素數量為0。
3.2程式碼例項
#演示選擇排序法
import random
#選擇陣列中最小的元素
def select_smallest(arr):
value=float('inf')
idx=None
for i in range(0,len(arr)):
if value>arr[i]:
value=arr[i]
idx=i
return idx
#主題函式
def selection_sort(arr):
#單獨處理arr長度為0或為1的情況
if len(arr)<=1:
return arr
sorted_arr=[]
while arr:
idx=select_smallest(arr)
sorted_arr.append(arr.pop(idx))
return sorted_arr
arr=[random.randint(0,10) for i in range(0,10)]
print('original arr',arr)
print('sorted arr',selection_sort(arr))
相關文章
- 陣列基本操作及冒泡演算法、直接選擇排序陣列演算法排序
- 陣列選擇排序陣列排序
- 單連結串列的排序(插入,選擇,冒泡)排序
- 陣列和連結串列陣列
- 陣列與連結串列陣列
- 演算法--陣列氣泡排序和選擇排序原理分析演算法陣列排序
- 排序演算法集:冒泡、插入、希爾、快速(陣列實現、連結串列實現)排序演算法陣列
- 圖解選擇排序及演算法優化(Java實現)圖解排序演算法優化Java
- (樹)根據排序陣列或者排序連結串列重新構建BST樹排序陣列
- 演算法:排序連結串列:歸併排序演算法排序
- 資料結構之連結串列與陣列(1):陣列和連結串列的簡介資料結構陣列
- 歸併排序:陣列和連結串列的多種實現排序陣列
- L2-022 重排連結串列【陣列】陣列
- L2-002 連結串列去重【陣列】陣列
- 可變陣列——連結串列前言陣列
- 陣列模擬單連結串列陣列
- 資料結構與演算法整理總結---陣列,連結串列資料結構演算法陣列
- 資料結構--陣列、單向連結串列、雙向連結串列資料結構陣列
- 線性結構 陣列與連結串列陣列
- 陣列和連結串列的區別陣列
- (連結串列)連結串列的排序問題排序
- 聊聊陣列與連結串列,棧與佇列陣列佇列
- 演算法基礎~連結串列~排序連結串列的合併(k條)演算法排序
- 選擇排序-演算法及優化排序演算法優化
- 圖解選擇排序與插入排序圖解排序
- 《啊哈!演算法》-第 2 章:棧、佇列、連結串列演算法佇列
- 重學資料結構和演算法(一)之複雜度、陣列、連結串列、棧、佇列、圖資料結構演算法複雜度陣列佇列
- 排序演算法總結之直接選擇排序排序演算法
- 資料結構之陣列和連結串列資料結構陣列
- 資料結構與演算法——歸併排序: 陣列&連結串列&遞迴&非遞迴解法全家桶資料結構演算法排序陣列遞迴
- 資料結構之連結串列與陣列(2):單向連結串列上的簡單操作問題資料結構陣列
- 單連結串列的冒泡,快排,選擇,插入,歸併等多圖詳解
- 面試-陣列和連結串列的區別面試陣列
- 刪除陣列中的元素(連結串列)陣列
- day1-陣列和連結串列陣列
- 陣列、連結串列、堆疊和佇列學習陣列佇列
- 【圖解連結串列類面試題】移除連結串列元素圖解面試題
- 【圖解連結串列類面試題】環形連結串列圖解面試題