常用排序基礎演算法 python

2021-08-16 01:34:15 字數 2625 閱讀 2327

基本思想:兩個數比較大小,較大的數下沉,較小的數冒起來。

過程:平均時間複雜度:o(n2)

引用

from random import randint

defbubble_sort

(arr, order=true):

""" 氣泡排序演算法

:param arr:需要排序的陣列

:param order:排序方向預設為true true為順序 false為逆序

:return: null

"""for num in range(len(arr)):

for j in range(len(arr)-1, num, -1):

if order:

if arr[j] < arr[j - 1]:

arr[j], arr[j - 1] = arr[j - 1], arr[j]

else:

if arr[j] > arr[j - 1]:

arr[j], arr[j - 1] = arr[j - 1], arr[j]

return arr

count = int(input('你需要隨機多少個數進行排序?\n'))

my_arr =

for i in range(count):

print('隨機數列為', my_arr)

bubble_sort(my_arr)

print('排序後的數列為', my_arr)

你需要隨機多少個數進行排序?

12隨機數列為 [94, 27, 0, 18, 20, 37, 96, 32, 115, 25, 52, 4]

排序後的數列為 [0, 4, 18, 20, 25, 27, 32, 37, 52, 94, 96, 115]

基本思想:

在長度為n的無序陣列中,第一次遍歷n-1個數,找到最小的數值與第乙個元素交換;

第二次遍歷n-2個數,找到最小的數值與第二個元素交換;

…第n-1次遍歷,找到最小的數值與第n-1個元素交換,排序完成。

過程:第一次找到最小的乙個元素,和第乙個元素交換

第二次找到第二小的乙個元素,和第二個元素交換

第三次找到第三小的乙個元素,和第三個元素進行交換

… 第n-1次找到第二大的元素,和倒數第二個位置進行交換

平均時間複雜度:o(n2)

引用

def

selection_sort

(arr, order=true):

""" 選擇排序演算法

:param arr:需要排序的陣列

:param order:排序方向預設為true true為順序 false為逆序

:return:返回排序號了的陣列

"""for num in range(len(arr)-1):

index = num

for j in range(num+1, len(arr)):

if order:

if arr[j] < arr[index]:

index = j

else:

if arr[j] > arr[index]:

index = j

if index != num:

arr[num], arr[index] = arr[index], arr[num]

return arr

基本思想:

在要排序的一組數中,假定前n-1個數已經排好序,現在將第n個數插到前面的有序數列中,使得這n個數也是排好順序的。如此反覆迴圈,直到全部排好順序。

插入排序

引用2. 平均時間複雜度:o(n2)

def

insertion_sort

(arr, order=true):

""" 插入排序演算法

:param arr: 需要排序的陣列

:param order:排序方向預設為true true為順序 false為逆序

:return:

"""for num in range(len(arr)-1):

for j in range(num+1, 0, -1):

if order:

if arr[j] < arr[j - 1]:

arr[j], arr[j - 1] = arr[j - 1], arr[j]

else:

break

else:

if arr[j] > arr[j - 1]:

arr[j], arr[j - 1] = arr[j - 1], arr[j]

else:

break

return arr

python 常用排序演算法

常用的排序演算法 氣泡排序,插入排序,歸併排序,快速排序 基數排序 堆排序,直接選擇排序。常用的查詢演算法 順序查詢,二分查詢,雜湊表查詢和二叉樹查詢 其中我們應該重點掌握二分查詢 歸併排序和快速排序,保證能隨時正確 完整地寫出它們的 同時對其他的查詢和排序必須能準確說出它們的特點 對其平均時間複雜...

常用基礎陣列排序演算法

解題思路 1 1 n個數字,自己 與 下一位 比較,選中最大的放在 下一位 再以 下一位 為 自己 與 下一位 比較,直到選出最大的數字放在最後 2 1 n 1 個數字,重複第一步驟操作 n 直到剩下最後乙個數字 思路 解題思路 1 從1 n 個數字中選擇最小的數字放在 第乙個 2 從2 n 個 重...

python常見排序演算法 python常用排序演算法

def bubble sort alist 氣泡排序 n len alist for i in range n 1 外層迴圈次數 for j in range n 1 i 這裡 記得要 i if alist j alist j 1 alist j alist j 1 alist j 1 alist ...