在一趟排序過程中記錄最小的數,放到第乙個位置上;再來一趟排序記錄無序區最小的數,放到第二個位置上;
依次類推…
最壞情況:o(n2n^2
n2)平均情況:o(n
2n^2
n2)最好情況:o(n
2n^2
n2)
o(1)
不穩定
簡單
趟數:n - 1無序區範圍:趟數 + 1 ~ n
#!/usr/bin/python3
# -*- coding: utf-8 -*-
"""選擇排序
在一趟排序中記錄最小的數,放到第乙個位置上。
再一趟排序記錄列表無序區中最小的數,放到第二個位置上。
依次類推...
時間複雜度:
最壞情況:o(n^2)
平均情況:o(n^2)
最好情況:o(n^2)
空間複雜度:o(1)
穩定性:不穩定
複雜性:簡單
關鍵點:
1. 趟數(n - 1)
2. 無序範圍(趟數 + 1, n)
3. 記錄最小數的下標
"""import random
defselect_sort
(ls, reverse=
false):
"""選擇排序
args:
:param ls: list, 待排序的列表
:param reverse: bool, 公升序還是降序,預設公升序
"""length =
len(ls)
# 決定是公升序還是降序
# symbol =
# default_symbol = symbol['gt']
# if reverse:
# default_symbol = symbol['lt']
# con_tpl = f'ls[min_loc] ls[j]'
for i in
range
(length -1)
: min_loc = i # 假定無序區第乙個數最小
for j in
range
(i +
1, length)
:# if eval(con_tpl):
if ls[min_loc]
> ls[j]
: min_loc = j
if min_loc != i:
ls[i]
, ls[min_loc]
= ls[min_loc]
, ls[i]
ls =
[random.randint(0,
100)
for _ in
range(10
(ls)
select_sort(ls, reverse=
true
(ls)
python演算法之選擇排序
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...
python演算法之選擇排序
選擇排序 selection sort 是一種簡單直觀的排序演算法。它的工作原理如下。首先在未排序序列中找到最小 大 元素,存放到排序序列的起始位置,然後,再從剩餘未排序元素中繼續尋找最小 大 元素,然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。選擇排序的主要優點與資料移動有關。如果某...
排序演算法 排序演算法之選擇排序
最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...