氣泡排序 選擇排序 快速排序 插入排序

2021-10-21 18:03:33 字數 1945 閱讀 1611

排序只對一維資料有意義.

兩層迴圈, 第一層是遍歷每乙個元素.

第二層迴圈,讓兩兩之間進行比較交換.

時間複雜度: o(n^2)

空間複雜度: o(1)

穩定性: 穩定的

def

buble_sort

(arr)

:for i in

range

(len

(arr)-1

):for j in

range

(len

(arr)

-i-1):

if arr[j]

>arr[j+1]

: arr[j]

,arr[j+1]

=arr[j+1]

,arr[j]

return arr

選擇後面的最小的和當前的元素進行對比

時間複雜度: o(n^2)

空間複雜度: o(1)

穩定性: 不穩定

def

select_sort

(arr)

:for i in

range

(len

(arr)-1

):index = i

for j in

range

(i+1

,len

(arr)):

if arr[j]

> arr[index]

: index = j

arr[i]

,arr[index]

= arr[index]

,arr[i]

return arr

思路: 選擇乙個基準值, 然後比它小的放到乙個陣列中, 比它大的放到另乙個陣列中, 遞迴這個操作.

時間複雜度: o(nlog2(n))

空間複雜度: o(nlog2(n))

穩定性: 不穩定的.

def

quick_sort

(arr):if

len(arr)

<=1:

return arr

pivot = arr.pop(

) big =

small =

for i in

range

(len

(arr)):

if arr[i]

>pivot:

)else:)

return quick_sort(small)

+[pivot]

+ quick_sort(big)

認為第乙個已經排好序, 從後面依次迴圈選擇元素和排好序的元素做對比,找到合適的位置,插入.

時間複雜度: o(n^2)

空間複雜度: o(1)

穩定性: 穩定的

# 插入排序

# 認為第乙個已經排好序, 從後面依次迴圈選擇元素和排好序的元素做對比,找到合適的位置,插入.

# 時間複雜度: o(n^2)

# 空間複雜度: o(1)

# 穩定性: 穩定的

definsert_sort

(arr)

:for i in

range(1

,len

(arr)):

loop_index = i

while loop_index >

0and arr[loop_index]

< arr[loop_index -1]

: arr[loop_index]

, arr[loop_index -1]

= arr[loop_index -1]

, arr[loop_index]

loop_index -=

1return arr

氣泡排序 選擇排序 插入排序 快速排序

include 氣泡排序,思想 從最末位開始 往前一位一位比較,比前一位小的話,就交換位置 兩個for,第乙個for迴圈用於記錄已排序的位置,第二個for迴圈用於已排序位置到結束位置之間的氣泡排序 void popsort int p int n 選擇排序,由前往後選擇最小的數。一輪比較完後,將最小...

氣泡排序 選擇排序 插入排序 快速排序

氣泡排序 元素兩兩比較,大的往後放,經過一輪比較後,那麼最大的元素就會出現在最後面。public static void main string args for int j 0 j arr i 1 system.out.println arrays.tostring arr 每次拿乙個元素,跟他後...

排序(冒泡,選擇,插入,快速)

氣泡排序func bubblesort s int int return s 選擇排序 選擇是排序也屬於內部排序法,是從欲排序的資料中,按指定的規則選出某一元素,經過和其他元素重整,再依原則交換位置後達到排序目的。第一次從r 0 r n 1 中選出最小值,與r 0 交換,第二次從r 1 r n 1 ...