2 選擇排序

2021-09-26 23:01:26 字數 1307 閱讀 5976

1 [書] 分解成小的功能函式,增加思路自信和邊界自信!

每次拿出最小的 放前面排排隊

def

smallest_pos

(alist, left, right)

: small = alist[left]

smallest_pos = left

for i in

range

(left, right)

:# 恰好left從2 3開始,對應下標正好為alist的原下標

if alist[i]

< small:

small = alist[i]

smallest_pos = i

return smallest_pos

defexchange

(alist, i, j)

: alist[i]

, alist[j]

= alist[j]

, alist[i]

defselect_sort

(alist)

: n =

len(alist)

for i in

range

(n):

s_pos = smallest_pos(alist, i, n)

exchange(alist, s_pos, i)

return alist

2 自a的好,答案的還用on個空間複雜度,不過它分解成小函式的方法可以一試

def

select_sort

(alist)

: n =

len(alist)

for i in

range

(n-1):

max_pos = i # 重要:因為下面的max_pos在if裡,可能執行不到,導致後面下標max_pos沒有建立

for j in

range

(i+1

, n)

:if alist[j]

> alist[i]

:max

= alist[j]

max_pos = j

'''交換最大值到應該的位置'''

alist[max_pos]

, alist[i]

= alist[i]

,max

# 若max就是alist[i], 這句就相當於沒交換,正確的!

return alist

排序 2 選擇排序

工具方法類 package mydatastructrueadndalgorith.three.arrsort 陣列為模板排序演算法中的一些公用的模板方法 建立人 曹雪坤 version 1.0.0 public class example 遍歷陣列 public static void show ...

排序 選擇排序(2)

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理是每一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到全部待排序的資料元素排完。選擇排序是不穩定的排序方...

排序2 選擇排序 選擇排序 堆排序

選擇排序,依次找到資料集n n 1 n 2 中比它大 小的最大 最小者,最終達到全部資料有序。1 選擇排序 直接的依次找到資料集合n n 1 n 2.的最大 最小者形成排序,非常好理解。選擇排序可能是和氣泡排序一樣,最直觀能想到的排序方法。顯然選擇排序和氣泡排序一樣,無所謂最好 最壞 平均,選擇排序...