您好,登錄后才能下訂單哦!
這篇“python排序算法之選擇排序怎么實現”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“python排序算法之選擇排序怎么實現”文章吧。
初級排序算法是指幾種較為基礎且容易理解的排序算法。初級排序算法包括插入排序、選擇排序和冒泡排序3種。雖然它們的效率相對于高級排序算法偏低,但是在了解初級排序算法之后,再去學習相對復雜的高級排序算法會容易許多。
選擇排序表示從無序的數組中,每次選擇最小或最大的數據,從無序數組中放到有序數組的末尾,以達到排序的效果。
選擇排序的平均時間復雜度是O(n2),最好情況下的時間復雜度和最壞情況下的時間復雜度都是O( n2 )。另外,它是一個不穩定的排序算法。選擇排序的過程很容易理解。如圖2-4所示,我們仍以遞增排序的算法為例,先遍歷未排序的數組,找到最小的元素。然后,把最小的元素從未排序的數組中刪除,添加到有序數組的末尾。
因為最小的元素是1,所以1被添加到仍為空的有序數組末尾。
如圖2-5所示,我們繼續對剩余元素進行遍歷。這次,最小的元素是2。我們把它添加到已排序的數組末尾。由于已在有序數組中的元素必定小于未排序數組中的所有元素,所以這步操作是正確無誤的。
如圖2-6所示,重復上述步驟,當未排序數組中只剩下一個元素時,把它添加到已排序的數組末尾,整個數組的排序就完成了。
選擇排序代碼:
nums = [5,3,6,4,1,2,8,7] res = [] #用于存儲已排序元素的數組 while len(nums): #當未排序數組內還有元素時,重復執行選擇最小數的代碼 minInd = 0 #初始化存儲最小數下標的變量,默認為第一個數 for i in range(1, len(nums)): if(nums[i] < nums[minInd]): #更新最小數的下標 minInd = i temp = nums[minInd] nums.pop(minInd) #把最小數從未排序數組中刪除 res.append(temp) #把最小數插入到已排序數組的末尾 print(res)
運行程序,輸出結果為:
[1,2,3,4,5,6,7,8]
在程序中,第一個for循環中的i代表了有序數組之后的第一個位置,也就是未排序數組中的第一個位置。隨后,再使用一個for循環,在未排序數組中找到最小值的下標。首先,把最小值下標minInd初始化為未排序數組中第一個元素的下標。隨后,遍歷整個數組,遇到比目前的最小值更小的元素時,更新下標即可。找出最小值后,把它和未排序數組中的第一個元素交換位置,這時它就成了有序數組中的最后一個元素。
以上就是關于“python排序算法之選擇排序怎么實現”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。