python演算法 選擇排序

2021-10-09 11:41:37 字數 1586 閱讀 6057

眾所周知,我們記憶體的工作原理就像我們逛商場時的存物櫃,每個櫃子只能放進乙個物品,你有兩樣物品要存,將物品存進(放進)櫃子裡後,你就可以去逛商場了!計算機就是多個櫃子的集合,每個單獨的櫃子都有自己的位址

而當我們需要存多個資料的時候,我們有兩種基本方式----陣列和鍊錶

我們還是拿我們的日常生活舉個栗子,你和你的三個好朋友一起去看電影,你們坐在一起是不是就得先保證有四個連在一起的座位,然後你又來了乙個好朋友,但是兩邊並沒有空位了,我們就得再找到五個連在一起的座位,或者讓旁邊的陌生人向旁邊挪一挪,這樣就比較麻煩,我們也可以提前進行佔座,我們先趁沒人佔上10個座位(雖然這樣不道德,我們暫且不管),只要我們來的人不超過10個人,我們就可以直接做到這裡,但是如果超過10個人,我們還得再重新找座位.

從上邊的案例中,我們可以總結出陣列的幾個優缺點:

1.記憶體空間占用的少

2.因為我們的資料都是連著的,所以查詢速度就很快

3.插入和刪除的速度比較慢,當我們在中間插入新的資料的時候,新元素之後的資料都得向後移動,刪除也是同理(只不過是向前移)

4.記憶體位址的利用率方面,不管你記憶體裡還有多少空間,如果沒辦法一次性給出陣列所需的要空間,那就會提示記憶體不足

5.若所留的空間佔滿了就無法再進行擴充套件

鍊錶中的元素可以存在任何的位置,鍊錶中的每個元素都儲存了下乙個元素的位址,就像我們平時玩的解密遊戲,第乙個線索會提示下乙個線索的位置,第二個會提示第三個的位置.

我們還是拿上面的栗子來說,鍊錶相比於陣列就像是我們在選座位的時候,我們分開來做,因此只要有足夠的記憶體空間(座位),就能不斷的為鍊錶進行分配

陣列:優點:使用方便 ,查詢效率 比煉表高,記憶體為一連續的區域

缺點:大小固定,不適合動態儲存,不方便動態新增

鍊錶:優點:可動態新增刪除 大小可變

缺點:只能通過順次指標訪問,查詢效率低

案例:我們平時聽的歌都會記錄我們平時聽的每首歌的次數,我們想將歌單裡的歌按照聽歌的次數由多到少進行排序

def

kuaisubijiao

(list):

num =

list[0

] num_index =

0for i in

range(1

,len

(list))

:if num >

list

[i]:

# 通過比較得到最小的數字的下標索引

num =

list

[i] num_index = i

return num_index

defkuaisupaixu

(list):

new_list =

for i in

range(1

,len

(list))

: num = kuaisubijiao(

list

)list

.pop(num)

)return new_list

print

(kuaisupaixu([5

,9,25

,4,1

,3,8

]))

python 排序演算法 選擇排序

所謂選擇排序,它是排序演算法中,一種簡單 直觀且靈巧的排序演算法,但是速度不是很快。選擇排序,見名思意就是選擇乙個元素,與其他元素進行比較,將乙個個的最大或最小值拿出來,放到另乙個列表中的這個過程,或者說行為我們稱之為選擇排序。1 首先得有乙個需要排序的列表,比如數字列表 2 拿到這個列表以後,我們...

Python 演算法 選擇排序

coding utf 8 選擇排序 defselect sort lst 基本思想 第1趟,在待排序記錄r1 r n 中選出最小的記錄,將它與r1交換 第2趟,在待排序記錄r2 r n 中選出最小的記錄,將它與r2交換 以此類推,第i趟在待排序記錄r i r n 中選出最小的記錄,將它與r i 交換...

Python排序演算法之選擇排序

在一趟排序過程中記錄最小的數,放到第乙個位置上 再來一趟排序記錄無序區最小的數,放到第二個位置上 依次類推 最壞情況 o n 2n 2 n2 平均情況 o n 2n 2 n2 最好情況 o n 2n 2 n2 o 1 不穩定 簡單 趟數 n 1 無序區範圍 趟數 1 n usr bin python...