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

溫馨提示×

溫馨提示×

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

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

如何使用python實現選擇排序

發布時間:2022-01-17 09:28:26 來源:億速云 閱讀:169 作者:小新 欄目:大數據

這篇文章主要介紹如何使用python實現選擇排序,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

選擇排序簡單理解:以升序來說,在每次遍歷待排序數組時,默認首位的元素為最小,然后逐個把剩余元素與該首位元素進行比較,如果小于則二者交換位置,這樣遍歷完一次數組,就能確定把最小的一個元素放到首位。每次遍歷完數組時,均能確定一個相對最小元素,因此相對于上次遍歷的數組來說,此次的數組長度減1,即已經確定為最小的元素不再參與后續的遍歷,正常情況下經過原數組長度減1次遍歷即可完成排序。
def selection_sort(alist):    '''選擇排序'''        last = len(alist)    first = 1        while first < last:        print(first)  # 可以理解為第幾次遍歷        for i in range(first,last):            if alist[i] < alist[first-1]: # 從小到大排列                alist[first-1],alist[i] = alist[i],alist[first-1]        print(alist)   # 每次遍歷完的結果                first += 1
   return alist

if __name__ == '__main__':    alist = [2,4,7,1,6,5,3]    print(selection_sort(alist))

        

        代碼流程:首先獲取數組長度last,初始遍歷時,默認0索引位置的元素最小,因此令first為1,first代表的意思是第一個與默認最小值進行比較的元素的索引(比如在進行第一輪遍歷時,肯定是索引為1的元素與索引為0的元素比較,后面每輪的遍歷類似推理即可);接著進入while循環,這里以開始比較的元素的索引與數組長度作條件判斷,小于則進入遍歷,否則終止循環(此內容下文針對示例結果具體講解);對于內部的for循環,注意其范圍:后者小于前者交換位置,否則不交換,這里可以看出后者元素的索引減1即為前者元素的索引,還是拿首次遍歷來說,當first為1時,其減1則為0,因此實現了第一個元素與默認為最小的0位置的元素的比較,到了第二次遍歷時,first為2,其減1為1,可實現2位置的與1位置的比較大小(此時的1為第二次遍歷時的數組的首個元素的索引 ‘0’)。。。。依次類推實現排序,在每次遍歷完后可通過打印數組來查看每次的結果。first加1,就是由于每遍歷一次,待排序的數組長度減1。下面結合示例結果說說:

1   # first值[1, 4, 7, 2, 6, 5, 3]  # 第一次遍歷結果2   # first值[1, 2, 7, 4, 6, 5, 3]  # 第二次遍歷結果3   # first值[1, 2, 3, 7, 6, 5, 4]  # 第三次遍歷結果4   # first值[1, 2, 3, 4, 7, 6, 5]  # 第四次遍歷結果5   # first值[1, 2, 3, 4, 5, 7, 6]  # 第五次遍歷結果6   # first值[1, 2, 3, 4, 5, 6, 7]  # 第六次遍歷結果
[1, 2, 3, 4, 5, 6, 7]  # 最終結果

        

        結果分析:待排序數組長度為7,則只需遍歷6次,前6次確定6個元素,則最后一個元素無需比較。當first為6時,6<7,進入循環,比較的是上一輪第五次結果

[1, 2, 3, 4, 5, 7, 6]中的list[6]與list[6-1]的大小,也就是數值7和6交換位置,此時已經卻確定好前6個數的位置,剩下最后一個位置的數,接著打印出第六次結果,然后first加1,此時7<7不成立,終止循環,此時的最后一個位置的數不進行比較也是最大的了,返回排序好的數組,結束。

        

        復雜度:選擇排序的平均復雜度仍為n**2;最優時間復雜度為n,即原數組為有序數組,遍歷第一次時如果未發生交換即可跳出循環,可設定一個變量來記錄交換次數詳情可參考排序之冒泡排序該文章中的相關做法。

以上是“如何使用python實現選擇排序”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

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

AI

建德市| 东光县| 商丘市| 乌兰察布市| 辛集市| 贵溪市| 布尔津县| 竹北市| 广南县| 崇仁县| 基隆市| 南城县| 五台县| 神农架林区| 常熟市| 乐陵市| 南充市| 藁城市| 山西省| 封开县| 洛隆县| 福海县| 泊头市| 阿合奇县| 太原市| 丰原市| 吐鲁番市| 新河县| 休宁县| 芜湖县| 军事| 靖边县| 金阳县| 揭东县| 太仓市| 葵青区| 隆安县| 麻阳| 博罗县| 吉安县| 敦煌市|