Python排序演算法之選擇排序

2021-09-27 12:01:28 字數 1682 閱讀 2095

在一趟排序過程中記錄最小的數,放到第乙個位置上;

再來一趟排序記錄無序區最小的數,放到第二個位置上;

依次類推…

最壞情況:o(n

2n^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

)]print

(ls)

select_sort(ls, reverse=

true

)print

(ls)

python演算法之選擇排序

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

python演算法之選擇排序

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

排序演算法 排序演算法之選擇排序

最近在學習排序演算法,就排序演算法中的四大經典排序 氣泡排序 快速排序 選擇排序 插入排序。會出一系列的講解排序演算法的部落格。今天繼快速排序之後整理一下選擇排序。選擇排序,就是從一列未排序的陣列中先選出最小 最大 的數,放在陣列的第一位,第一位原來的數字放在最小的原來的位置,再選出第二小的數,放在...