Python氣泡排序 快速排序 堆排序

2021-10-07 16:05:10 字數 2281 閱讀 4550

氣泡排序

def

bubble_sort

(array, n)

:for i in

range

(n):

for j in

range(1

, n - i)

:if array[j -1]

> array[j]

: array[j -1]

, array[j]

= array[j]

, array[j -

1]

快速排序

def

quick_sort

(array, l, r)

:if l < r:

q = partition(array, l, r)

quick_sort(array, l, q -1)

quick_sort(array, q +

1, r)

defpartition

(array, l, r)

: x = array[r]

i = l

for j in

range

(l, r)

:if array[j]

<= x:

array[i]

, array[j]

= array[j]

, array[i]

i +=

1 array[i]

, array[r]

= array[r]

, array[i]

return i

堆排序

注意堆排序外面還有乙個在下面測試部分的迴圈。

# 堆排序

defheap_sort

(array, n, length)

: l =

2*n +

1 r =

2*n +

2if l <= length -1:

heap_sort(array, l, length)

if r <= length -1:

heap_sort(array, r, length)

if l >= length:

return

index = l

if r < length and array[r]

> array[l]

: index = r

if array[n]

< array[index]

: array[n]

, array[index]

= array[index]

, array[n]

測試部分

if __name__ ==

'__main__'

: a =

input

("輸入陣列元素:"

).split(

" ")

a =list

(map

(int

, a)

) b = a.copy(

) c = a.copy(

)# 氣泡排序

bubble_sort(a,

len(a)

)print

(a)# 快速排序

quick_sort(b,0,

len(b)-1

)print

(b)# 堆排序

for i in

range

(len

(c))

: heap_sort(c,0,

len(c)

- i)

c[0]

, c[

len(c)

- i -1]

= c[

len(c)

- i -1]

, c[0]

print

(c)

測試結果

輸入陣列元素:483

6715

[1,3

,4,5

,6,7

,8][

1,3,

4,5,

6,7,

8][1

,3,4

,5,6

,7,8

]process finished with exit code 0

排序 氣泡排序 快速排序

快速排序 氣泡排序就是自上向下依次對比兩個數字,若上面的數字大於下面的數字,則兩者交換,否則不交換。這樣每次迴圈結束,未排序的最大的數就到了最下面。如陣列前兩次迴圈過程如下 快速排序的核心是partition 函式,其功能如下所示 34的位置找到後,其將陣列分成兩部分,前一部分都比34小,後一部分都...

排序 氣泡排序 快速排序

1 基本思想 將第乙個記錄的關鍵字與第二個記錄的關鍵字比較,若為逆序,則將兩個記錄交換,再向後比較。關鍵字小的漂浮,關鍵字大的下沉。2 穩定性 演算法穩定。3 時間複雜度 o n 空間複雜度 o 1 4 實現 include define n 5 陣列長度上限 intmain printf 氣泡排序...

排序(氣泡排序 快速排序

關於排序的穩定性 在待排序的記錄序列中,存在多個具有相同的關鍵字的記錄,若經過排序,這些記錄的相對次序保持不變,即在原序列中r i r j 且r i 在r j 之前,而在排序後的序列中,r i 仍在r j 之前,則稱這種排序演算法是穩定的 否則稱為不穩定的。一 氣泡排序 氣泡排序的基本思想 每次比較...