#氣泡排序和選擇排序
defbubblesort
(alist)
:for i in
range
(len
(alist)-1
,0,-
1):for j in
range
(i):
if alist[j]
> alist[j+1]
: alist[j]
,alist[j+1]
= alist[j +1]
,alist[j]
return alist
alist =[1
,8,3
,5,9
]bubblesort(alist)
print
(bubblesort(alist)
)#選擇排序
defselectionsort
(alist)
:for i in
range
(len
(alist)-1
,0,-
1): maxindex =
0for j in
range(1
,i+1):
if alist[j]
> alist[maxindex]
: maxindex = j
alist[i]
,alist[maxindex]
= alist[maxindex]
,alist[i]
alist =[1
,8,3
,5,9
,16,22
,99,2
,100
]selectionsort(alist)
print
(alist)
#插入排序
definsertionsort
(alist)
:for index in
range
(len
(alist)):
currentvalue = alist[index]
while index >
0and alist[index -1]
> currentvalue:
alist[index]
= alist[index -1]
index = index -
1 alist[index]
= currentvalue
alist =[8
,6,3
,3,3
,5]insertionsort(alist)
print
(alist)
#謝爾排序
defshell_sort
(alist)
: n =
len(alist)
#初始步長
step = n //
2while step >0:
#按步長進行插入排序
for i in
range
(step,n)
: j = i
#插入排序
while j >= step and alist[j-step]
> alist[j]
: alist[j-step]
,alist[j]
= alist[j]
,alist[j-step]
j -= step
#得到新的步長
step = step //
2return alist
alist =[1
,8,3
,5,9
,16,22
,99,2
,100
]print
(shell_sort(alist)
)#歸併排序
defmerge_sort
(list):
iflen
(list
)<=1:
return
list
middle =
len(
list)//
2 left = merge_sort(
list
[:middle]
) right = merge_sort(
list
[middle:])
merged =
while left and right:
if left[0]
<= right[0]
:0))
else:0
))merged.extend(right if right else left)
return merged
list=[
1,8,
3,5,
9,16,
22,99,
2,100]
print
(merge_sort(
list))
#快速排序
defquicksort
(alist,first,last)
:if first < last:
splitpoint = partition(alist,first,last)
quicksort(alist,first,splitpoint-1)
quicksort(alist,splitpoint+
1,last)
defpartition
(alist,first,last)
: pivotvalue = alist[first]
leftmark = first +
1 rightmark = last
done =
false
while
not done:
while rightmark >= leftmark and alist[leftmark]
<= pivotvalue:
leftmark +=
1while rightmark >= leftmark and alist[rightmark]
>= pivotvalue:
rightmark -=
1if rightmark < leftmark:
done =
true
else
: alist[rightmark]
, alist[leftmark]
= alist[leftmark]
, alist[rightmark]
alist[first]
,alist[rightmark]
= alist[rightmark]
,alist[first]
return rightmark
list=[
31,556,26,
20,17,
55]quicksort(
list,0
,len
(list)-
1)print
(list
)
python 實現常見排序演算法
coding utf 8 bubble sort 氣泡排序 時間複雜度最壞為o n2 最優的為n import time def bubble sort alist 氣泡排序 param alist return cur 1 while cur len alist 1 and len alist 1...
常見排序演算法Python實現
氣泡排序 最優時間複雜度 o n 最壞時間複雜度 o n 2 穩定性 穩定 def bubble sort alist 氣泡排序 for j in range len alist 1,0,1 count 0 for i in range j if alist i alist i 1 alist i ...
常見排序演算法 python實現
穩定性是指序列中相同的數字在排序後相對位置不發生改變 常見的且穩定的排序演算法有冒泡 歸併 插入,其餘的為非穩定的排序演算法 def bubble sort alist for j in range len alist 1 0,1 for i in range j if alist i alist ...