python演算法之選擇排序

2021-10-01 23:43:43 字數 1184 閱讀 5220

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

選擇排序的主要優點與資料移動有關。如果某個元素位於正確的最終位置上,則它不會被移動。選擇排序每次交換一對元素,它們當中至少有乙個將被移到其最終位置上,因此對n個元素的表進行排序總共進行至多n-1次交換。在所有的完全依靠交換去移動元素的排序方法中,選擇排序屬於非常好的一種。

方法一:

li = [84,36,98,14,72,31,46,58,21]

def xuan(li):

n = len(li)

# 需要進行n-1次選擇操作

for i in range(n-1, 0, -1):

# 記錄最大位置

max_index = i

# 從i+1位置到末尾選擇出最小資料

for j in range(i):

if li[j] > li[max_index]:

max_index = j

# 如果選擇出的資料不在正確位置,進行交換

if max_index != i:

li[i], li[max_index] = li[max_index], li[i]

print(li)

xuan(li)

方法二:

li = [84,36,98,14,72,31,46,58,21]

def xuan1(li):

n = len(li)

# 需要進行n-1次選擇操作

for i in range(n-1):

# 記錄最小位置

min_index = i

# 從i+1位置到末尾選擇出最小資料

for j in range(i+1 ,n):

if li[j] < li[min_index]:

min_index = j

# 如果選擇出的資料不在正確位置,進行交換

if min_index != i:

li[i], li[min_index] = li[min_index], li[i]

print(li)

xuan1(li)

Python排序演算法之選擇排序

在一趟排序過程中記錄最小的數,放到第乙個位置上 再來一趟排序記錄無序區最小的數,放到第二個位置上 依次類推 最壞情況 o n 2n 2 n2 平均情況 o n 2n 2 n2 最好情況 o n 2n 2 n2 o 1 不穩定 簡單 趟數 n 1 無序區範圍 趟數 1 n usr bin python...

python演算法之選擇排序

選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...

Python演算法之選擇排序(八)

原理 第一次從待排序的資料元素中選出最小 或最大 的乙個元素,存放在序列的起始位置,然後再從剩餘的未排序元素中尋找到最小 大 元素,然後放到已排序的序列的末尾。以此類推,直到全部待排序的資料元素的個數為零。選擇排序是不穩定的排序方法。def selection alist n len alist 需...