python學習——python實現選擇排序演算法
阿新 • • 發佈:2021-01-18
python實現選擇排序演算法
一、選擇排序演算法實現原理
基本思想
- 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置。
- 再從剩餘未排序元素中繼續尋找最小(大)元素,然後放到已排序序列的末尾。
- 重複第二步,直到所有元素均排序完畢。
具體步驟
- 從第一個數開始計數基準(為最小值),記錄下標
- 迴圈比較後面的數,記錄比基準小的數的下標,直到最後一個數比較後,將當前最小值下標與基準替換
- 從下標為第幾次迴圈開始繼續1,2操作,直到迴圈列表長度-1的次數為止
二、圖解選擇排序
三、py程式碼實現選擇排序演算法
關鍵程式碼:
def select_sort(arr):
""" 選擇排序:先將第一次選擇為最小的一個 然後對後面的所有進行選擇,將最小的放入前面
:param arr: 需要排序的陣列
"""
if len(arr) <= 1:
return
# 最小值從第一個開始
i = 0
# 外迴圈控制迴圈的次數 每一次迴圈結束,最小的數在最前面
while i < len(arr):
# 從第二個開始比較
j = i + 1
# 當前最小值下標
minIndex = i
# 內迴圈控制比較的次數
while j < len(arr):
# 如果當前比較值比最小值小 就記住當前下標為最小值下標
if arr[j] < arr[minIndex]:
minIndex = j
j += 1
# 將當前最小值替換當前面
temp = arr[i]
arr[i] = arr[minIndex]
arr[minIndex] = temp
i += 1
執行:
# 定義一個列表
arr = [2, 3, 1, 5, 10, 6, 3, 4, 8]
print(arr)
select_sort(arr)
print(arr)
列印結果:
[2, 3, 1, 5, 10, 6, 3, 4, 8]
[1, 2, 3, 3, 4, 5, 6, 8, 10]