python 選擇排序

2022-08-17 08:24:10 字數 2586 閱讀 7949

# 選擇排序:選擇極大或極小值,跟第乙個進行交換

lst = [1, 3, 9, 8, 5, 2, 7, 4, 6]

length = len(lst)

for i in range(length):

maxvalueindex = i # 先假定第乙個為最大值

for j in range(i+1, length): # 從第二個開始跟第乙個比較

if lst[j] > lst[maxvalueindex]:

maxvalueindex = j;

if i != maxvalueindex: # 找到最大值的index後,進行交換

tmp = lst[i]

lst[i] = lst[maxvalueindex]

lst[maxvalueindex] = tmp

print(lst)

print('-------------------------------------')

# 選擇排序:優化 - 每趟分別找到最大值和最小值

lst = [1, 3, 9, 8, 5, 2, 7, 4, 6]

length = len(lst)

for i in range(length // 2): # 迴圈少一半

maxvalueindex = i # 先假定第乙個為最大值

minvalueindex = -i-1 # 假定最後乙個為最小值

minorigin = minvalueindex # 記錄最小值的原始index

for j in range(i+1, length-i): # 從第二個開始跟第乙個比較

if lst[j] > lst[maxvalueindex]:

maxvalueindex = j

if lst[- j - 1] < lst[minvalueindex]:

minvalueindex = - j - 1

if i != maxvalueindex: # 找到最大值的index後,進行交換

tmp = lst[i]

lst[i] = lst[maxvalueindex]

lst[maxvalueindex] = tmp

# 如果最小值被交換過,更新索引

if i == minvalueindex or i == length + minvalueindex:

minvalueindex = maxvalueindex

# 最小值索引不同,但值相同,不用交換了

if minorigin != minvalueindex and lst[minorigin] != lst[minvalueindex]:

tmp = lst[minorigin]

lst[minorigin] = lst[minvalueindex]

lst[minvalueindex] = tmp

print(lst)

print('-------------------------------------')

# 選擇排序:優化 - 最大值最小值相等,跳出迴圈

lst = [1, 3, 9, 1, 1, 1, 1, 1, 1]

length = len(lst)

for i in range(length // 2): # 迴圈少一半

maxvalueindex = i # 先假定第乙個為最大值

minvalueindex = -i-1 # 假定最後乙個為最小值

minorigin = minvalueindex # 記錄最小值的原始index

for j in range(i+1, length-i): # 從第二個開始跟第乙個比較

if lst[j] > lst[maxvalueindex]:

maxvalueindex = j

if lst[- j - 1] < lst[minvalueindex]:

minvalueindex = - j - 1

# 如果元素相同,結束迴圈

if lst[maxvalueindex] == lst[minvalueindex]:

break

if i != maxvalueindex: # 找到最大值的index後,進行交換

tmp = lst[i]

lst[i] = lst[maxvalueindex]

lst[maxvalueindex] = tmp

# 如果最小值被交換過,更新索引

if i == minvalueindex or i == length + minvalueindex:

minvalueindex = maxvalueindex

# 最小值索引不同,但值相同,不用交換了

if minorigin != minvalueindex and lst[minorigin] != lst[minvalueindex]:

tmp = lst[minorigin]

lst[minorigin] = lst[minvalueindex]

lst[minvalueindex] = tmp

print(lst)

Python 選擇排序

coding utf 8 選擇排序 在所有記錄中選擇最小的乙個元素,與第乙個記錄交換,依次,在其餘的記錄中選擇最小的元素與第二個元素交換 def sellectsort list list 4,1,9,13,34,26,10,7,4 m len list if m 2 如果是空表或只有乙個元素,返回...

python選擇排序

選擇排序是不穩定的排序方法 比如序列 5,5,3 第一次就將第乙個 5 與 3 交換,導致第乙個5挪動到第二個5後面 data set 9,1,22,31,45,3,6,2,11 smallest num index 0 初始列表最小值,預設為第乙個 loop count 0 for j in ra...

選擇排序python

python 選擇排序 選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。菜鳥教程的圖很清...