日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > python >内容正文

python

python选择排序从大到小_Python实现选择排序

發布時間:2023/12/9 python 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 python选择排序从大到小_Python实现选择排序 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

一、選擇排序簡介

選擇排序(Selection sort)是一種簡單直觀的排序算法。選擇排序首先從待排序列表中找到最小(大)的元素,存放到元素列表的起始位置(與起始位置進行交換),作為已排序序列,第一輪排序完成。然后,繼續從未排序序列中找到最小(大)的元素,存放到已排序序列的末尾。直到所有元素都存放到了已排序序列中,列表排序完成。選擇排序每次都是去找最小(大)的元素,隱含了一種挑選的過程,所以被稱為選擇排序。

二、選擇排序原理

選擇排序的原理如下:1. 從待排序列表中找到最小的元素(升序排列,降序排列則找最大的元素),存放到列表的起始位置,作為已排序的序列。2. 繼續從未排序序列中找到最小的元素,存放到已排序序列的末尾(同時也是未排序序列的起始位置)。3. 重復第2步,直到所有元素都已經存放到了已排序序列,則列表排序完成。以列表 [10, 17, 50, 7, 30, 24, 27, 45, 15, 5, 36, 21] 進行升序排列為例。列表的初始狀態如下圖。

要進行升序排列,則每輪排序都要找到最小的元素。1. 找到元素列表中最小的元素,與列表起始位置的元素進行對比,如果最小的元素小于起始位置的元素,則交換位置。

2. 5小于10,交換位置,將最小的元素存放到列表的起始位置。

3. 將最小的元素作為已排序序列,后面的元素為未排序序列。

4. 繼續找到未排序序列中的最小元素,與未排序序列的第一個元素(已排序序列的末尾)比較,如果最小的元素更小則交換位置。

5. 7小于17,交換位置。將最小的元素存放在已排序序列的末尾。

6. 第二輪排序完成后,已排序序列的長度變成二,未排序序列的長度減一。

7. 繼續重復上面的4,5步驟,找到未排序序列中的最小元素,存放到已排序序列的末尾。每進行一輪排序,已排序序列的長度加一,未排序序列的長度減一,直到未排序序列的長度為1,列表排序完成。排序結果如下圖。

三、Python實現選擇排序

# coding=utf-8def selection_sort(array): for i in range(len(array)-1): min_index = i for j in range(i+1, len(array)): if array[j] < array[min_index]: min_index = j if min_index != i: array[i], array[min_index] = array[min_index], array[i] return arrayif __name__ == '__main__': array = [10, 17, 50, 7, 30, 24, 27, 45, 15, 5, 36, 21] print(selection_sort(array))運行結果:[5, 7, 10, 15, 17, 21, 24, 27, 30, 36, 45, 50]代碼中,i 表示第幾輪排序,j 表示走訪未排序序列中元素的索引,將走訪到的每一個元素與未排序序列的第一個元素進行比較。min_index 用于標記當前這一輪排序中最小元素的索引,如果走訪到 j 索引的元素比 min_index 索引的元素小,則將 j 賦值給 min_index,j 繼續走訪。走訪完所有元素后,將 min_index 索引的元素交換到 i 索引的位置(未排序序列的起始位置)。

四、選擇排序的時間復雜度和穩定性

1. 時間復雜度在選擇排序中,不管待排序列表的初始狀態如何,都不影響排序的時間復雜度。選擇排序需要進行 n-1 輪排序,每一輪排序需要進行 n-i 次比較,i 的平均值是 n/2 ,時間復雜度為 T(n)=n(n-1)/2 ,再乘每次操作的步驟數(常數,不影響大O記法),所以選擇排序的時間復雜度為 O(n^2) 。2. 穩定性在選擇排序中,每次都是選擇未排序序列中的最小元素,交換到未排序序列的起始位置。存在相等的元素時,如果最小的元素都比它們靠后,最小的元素與相對位置靠前的元素進行交換,則它們的相對位置就發生了變化。如 [10, 10, 5],進行選擇排序后兩個 10 的相對位置發生了變化。所以選擇排序是一種不穩定的排序算法。

總結

以上是生活随笔為你收集整理的python选择排序从大到小_Python实现选择排序的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。