02 第二章 選擇排序

2021-10-05 16:48:42 字數 1481 閱讀 6768

本章內容:

目錄

陣列和鍊錶的基本要點

選擇排序

陣列意味著所有代辦的事項在記憶體中都是相連的,直到每乙個元素的位址

鍊錶可以儲存在記憶體的任何地方,鍊錶的每個元素都儲存了下乙個元素的列表

插入和刪除陣列的時候,鍊錶都很簡單,只需要修改前乙個元素所指向的位址即可;但是陣列需要後面的元素都要移動

陣列用的多一些,支援隨機訪問;鍊錶只能支援順序訪問(乙個接乙個)

陣列和鍊錶的執行時間

operations 

陣列 鍊錶 

讀取 o(1)  

o(n)

插入o(n)

o(1)  

刪除o(n)

o(1)  

比如把一堆資料需要從大到小的排序,使用選擇排序的意思就是:

每次選擇出所有資料裡面最大的那個資料,然後依次新增到乙個新的列表裡面,遍歷完所有資料,就會得到乙個有序的列表了

需要的總時間為:o(n×n)=  o(n平方)

速度不快

例項:有乙個列表 [4,5,8,1,5,6,12],要對其中的資料   採用選擇排序的方法   進行從小到大的排序

選出列表裡面資料最小的那個

把那個資料放到乙個新的列表裡面

def findsmallest(arr):

#找到最小數的函式

smallest = arr[0]

smallest_index = 0

#對最小數和最小數的索引進行初始化,假設便是最開始的那是數以及0

for i in range(1,len(arr)):

#遍歷列表中的每乙個元素找到其中的最小數及其位置

if arr[i] < smallest:

#如果 arr[i] 這個數比smallest小的話那麼那個最小數就會被新的數代替

smallest = arr[i]

smallest_index = i

return smallest_index

def selectionsort(arr):

#主函式

newarr =

#新建乙個列表來裝資料

for i in range(len(arr)):

#遍歷列表中的每乙個元素

smallest_index = findsmallest(arr)

#找到原來列表中的最小的那個數

#新的那個列表加入被刪除的那個元素

#注意:pop(index)會將列表中的該位置的元素刪除並且返回被刪除的元素

return newarr

print(selectionsort([45,6,2,19,3,61,5,6,44]))

錯誤注釋:若是出現了一些錯誤,看看return的縮排位置不太準確

輸出結果:[2, 3, 5, 6, 6, 19, 44, 45, 61]

第二章 快速排序

快速排序演算法也是基於分治思想的一種排序演算法,它的基本操作即為比較 交換。快速排序演算法的基本思想是從待排序的序列中選取乙個比較標準k 通常選取第乙個元素 然後將其餘元素依次跟k進行比較。在比較的過程中將大於k的元素移到k的後面,將小於k的元素移到k的前面,最後的結果是將原始序列分為兩個子串行,而...

演算法 第二章排序

目錄 初級排序 選擇排序 插入排序 希爾排序 歸併排序 自頂向下排序 自底向上排序 快速排序 優先佇列 初級排序 一 選擇排序 簡述 選擇排序就是遍歷一遍陣列把最小的和第乙個數字交換。第二遍遍歷陣列時候選擇和第二個交換,一次類推。注意不要在for迴圈中用a.length 不然每次都要獲取a.leng...

演算法第二章 快速排序

先把快速排序的 實現貼上來,太晚了,過程改天再加上!快速排序就是把乙個數拿出來,然後把小於這個數的扔到一邊,把大於它的扔到一邊,那這個數就在正確的位置上了 然後把這個數的左邊分成乙份,右邊分成乙份,再把這兩份進行剛才的做法,一直不停地這樣做,直到不能再分。接下來就要說明怎麼把小於它的數扔到一邊,大於...