1.快速排序
def
quick_sort
(alist,first,last)
:if first>=last:
return
mid_value=alist[first]
low=first
high=last
while low
while low
>=mid_value:
high-=
1 alist[low]
=alist[high]
while low
low+=
1 alist[high]
=alist[low]
alist[low]
=mid_value
quick_sort(alist,first,low-1)
quick_sort(alist,low+
1,last)
2.氣泡排序def
sort
(numlist)
: flag=
false
for j in
range
(len
(numlist)-1
):for i in
range
(len
(numlist)-1
):if numlist[i]
>numlist[i+1]
: flag=
true
temp=numlist[i]
numlist[i]
=numlist[i+1]
numlist[i+1]
=temp
ifnot flag:
break
else
: flag=
false
return numlist
3. 插入排序def
main()
: num_list=[2
,51,3
,40,8
,1,6
]# 從第二個元素開始選擇,插入前面有序元素組中,和有序元素組中最後乙個元素比較
# 若比它大則放在它後面,否則繼續和它前面的元素比較
for i in
range(1
,len
(num_list)):
insert_value=num_list[i]
insert_index=i-
1while insert_index>=
0and insert_value
:# 如果插入值小於有序列表待插入位置的值,則待插入位置的值後移
num_list[insert_index+1]
=num_list[insert_index]
insert_index-=
1 num_list[insert_index+1]
=insert_value
4.選擇排序def
main()
: numlist=[4
,5,1
,0,5
,88,7
]for i in
range
(len
(numlist)):
min=numlist[i]
for j in
range
(i,len
(numlist)):
ifmin
> numlist[j]
: temp=
minmin
=numlist[j]
numlist[j]
=temp
numlist[i]
=min
for i in
range
(len
(numlist)):
print
(numlist[i]
)
5. 希爾排序這個鏈結說的比較好懂 :希爾排序思路
def
main()
:"""對陣列分組,初始增量為length/2,後面的分組在前面的基礎上/2,對每個分組
使用插入排序
每一步的結果大體的趨勢是小的大部分都前移了,陣列趨於有序
普通插入法對相對有序的序列插入效率高
"""num_list=[8
,9,1
,70,2
,3,5
,4,6
,0] gap=
len(num_list)
# 第一層迴圈取不同的gap值
while gap>0:
gap=
int(gap/2)
if gap==0:
break
# 第二層迴圈開始對每組進行插入排序
# 從第gap個元素開始,每次向前移動一次,也就換成下一組插入排序了,一共有gap組。但是再經歷gap次又會對第一組排序
for i in
range
(gap,
len(num_list)):
# 這一層迴圈是對上層迴圈遍歷到的元素和與它同一組的之前的所有元素比較
# 它和它同一組的之前的元素索引相差gap
insert_value=num_list[i]
insert_index=i-gap
while insert_index >=
0and insert_value
:# 判斷此時的元素和同組前乙個元素誰大誰小
num_list[insert_index+gap]
=num_list[insert_index]
insert_index=insert_index-gap
num_list[insert_index+gap]
=insert_value
6.常見排序演算法的時間複雜度比較
時間複雜度分析的相關博文:超詳細的演算法複雜度比較
常見排序演算法及其演算法思路解讀
幾種常見的排序演算法及其演算法思路 1.選擇排序 o n方 所謂選擇就是每次都選擇乙個最小的元素放在最前面。思路是去尋找最小元素的座標,然後將最小座標的元素與當前座標的元素交換。具體的做法是假設當前迴圈的第乙個座標是最小元素的座標,然後從第二個元素開始遍歷 內層迴圈 如果該元素比最小座標的的元素小,...
幾種排序演算法及其效率對比
public class bubblesort sort arr system.out.println arrays.tostring arr long start system.currenttimemillis sort arr long end system.currenttimemillis...
幾種排序演算法及其Python實現 插入排序
直接插入排序是一種最簡單的排序方法,它的基本操作是將乙個記錄插入到已排好序的有序表中,從而得到乙個新的 記錄數增1的有序表。def insertsort l none j 0 x 0 for i in range 1,len l if l i l i 1 x l i l i l i 1 for j ...