氣泡排序
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 之前,則稱這種排序演算法是穩定的 否則稱為不穩定的。一 氣泡排序 氣泡排序的基本思想 每次比較...