91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

Python排序算法之 選擇排序

發布時間:2020-08-12 00:01:52 來源:ITPUB博客 閱讀:141 作者:ckxllf 欄目:編程語言

  一、選擇排序(Selection sort)

  選擇排序(Selection sort)是一種簡單直觀的排序算法。它的工作原理是每一次從待排序的數據元素中選出最小(或最大)的一個元素,存放在序列的起始位置,所以稱為:選擇排序。

  1、原理

  設第一個元素為比較元素,依次和后面的元素比較,比較完所有元素找到最小的元素,將它和第一個元素互換

  重復上述操作,我們找出第二小的元素和第二個位置的元素互換,以此類推找出剩余最小元素將它換到前面,即完成排序

  2、舉例

  舉個例子,假設我現在有一個數列需要使用冒泡來排序 [11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22],

  我們來看看使用冒泡的詳細步驟:

  1、首先11作為比較元素和列表后面的所有元素比較,找到最小的11,并放在第一位,第一輪完了,列表

  是 [11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22]

  2、然后,99作為比較元素,和后面的元素[33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22]作比較,找到最小的11,

  和第二位元素99交換位置,即第二輪比較完后,列表為 [11, 11, 33 , 69, 77, 88, 55, 99, 33, 36,39, 66, 44, 22]

  3、第三輪比較完,22最小,和第三個元素33交換位置,列表變為 [11, 11, 22, 69, 77, 88, 55, 99, 33, 36,39, 66, 44, 33]

  4、最終得到列表 [11, 11, 22, 33, 33, 36, 39, 44, 55, 66, 69, 77, 88, 99]

  注:是一輪比較完后,找出最小的,再交換這個元素和對應輪數位置處的元素位置,每輪只交換一次。二冒泡排序是,沒比較一次,就交換一次位置,每輪要交換很多次。

  二、代碼

  代碼用jupyternotebook實現

  實現思路: 使用雙重for循環,內層變量為i, 外層為j,在內層循環中不斷的比較相鄰的兩個值(j, j+1)的大小,如果j+1的值大于j的值,交換兩者位置,每循環一次,外層的i增加1,等到i等于(len(arr) - 1)的時候,結束循環

  第一次看不懂很正常,不要灰心,下面是 jupyter 使用代碼的實現

  1 def selection_sort(arr):

  2 """選擇排序"""

  3 # 第一層for表示循環選擇的遍數

  4 for i in range(len(arr) - 1):

  5 # 將起始元素設為最小元素

  6 min_index = i

  7 # 第二層for表示最小元素和后面的元素逐個比較

  8 for j in range(i + 1, len(arr)):

  9 if arr[j] < arr[min_index]:

  10 # 如果當前元素比最小元素小,則把當前元素角標記為最小元素角標

  11 min_index = j

  12 # 查找一遍后將最小元素與起始元素互換

  13 arr[min_index], arr[i] = arr[i], arr[min_index]

  14 return arr

  15 無錫看婦科的醫院 http://www.ytsgfk120.com/

  16 selection_sort([11, 99, 33 , 69, 77, 88, 55, 11, 33, 36,39, 66, 44, 22])

  17 #返回結果 [11, 11, 22, 33, 33, 36, 39, 44, 55, 66, 69, 77, 88, 99]

  三、特點

  選擇排序和冒泡排序很類似,但是選擇排序每輪比較只會有一次交換,而冒泡排序會有多次交換,交換次數比冒泡排序少,就減少cpu的消耗,所以在數據量小的時候可以用選擇排序,實際適用的場合非常少。

  比較性:因為排序時元素之間需要比較,所以是比較排序

  穩定性:因為存在任意位置的兩個元素交換,比如[5, 8, 5, 2],第一個5會和2交換位置,所以改變了兩個5原來的相對順序,所以為不穩定排序。

  時間復雜度:我們看到選擇排序同樣是雙層循環n*(n-1)),所以時間復雜度也為:O(n^2)

  空間復雜度:只需要常數個輔助單元,所以空間復雜度也為O(1)

  記憶方法:選擇對象要先選最小的,因為嫩,哈哈

  結果

  Successfully !!!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

冀州市| 哈密市| 扶风县| 新昌县| 襄城县| 宁海县| 新巴尔虎右旗| 屯昌县| 额尔古纳市| 安平县| 沙雅县| 浠水县| 肥东县| 天柱县| 喀喇沁旗| 都江堰市| 喀喇| 盐城市| 东山县| 长武县| 曲水县| 大洼县| 文登市| 临颍县| 五华县| 阿合奇县| 徐水县| 五寨县| 甘南县| 哈尔滨市| 乐昌市| 阳信县| 睢宁县| 沙河市| 神木县| 全州县| 张北县| 耒阳市| 嵊泗县| 沅陵县| 和田县|