def insertsort(a):
'''插入排序演算法:傳入乙個陣列,對陣列進行排序'''
print('排序前的順序:',a)
length=len(a)
for i in range(1,length):#從第二個開始
key=a[i]
j=i-1
while j>=0 and a[j]>key:
a[j+1]=a[j]
j=j-1
a[j+1]=key
print('排序後的順序:',a)
#插入排序時間複雜度:n^2,空間複雜度:1,相同元素保持相對不變性(相對位置不變)
if __name__=='__main__':
lista=[1,5,7,3,4,6,7,8,9,9,15,10,4]
insertsort(lista)
def bablesort(a):
'''氣泡排序演算法:對陣列進行排序'''
print('氣泡排序前的順序:',a)
length=len(a)
for i in range(1,length):
#rang=range(i)
#for j in reversed(rang):
for j in range(i,0,-1): #range逆序遍歷
if a[j-1]> a[j]:
temp=a[j]
a[j]=a[j-1]
a[j-1]=temp
print('氣泡排序後的順序:',a)
# 氣泡排序時間複雜度為:n^2,空間複雜度1,相同元素保持相對不變性
if __name__=='__main__':
lista=[1,5,7,3,4,6,7,8,9,9,15,10,4]
bablesort(lista)
# 歸併排序,對陣列進行排序
def mergesort(alist):
print("splitting ",alist)
if len(alist)>1:
mid = len(alist)//2#精確除法,取小於等於結果的最大整數,相當於對結果進行向下取整
lefthalf = alist[:mid]
righthalf = alist[mid:]
mergesort(lefthalf)#遞迴呼叫左半部分
mergesort(righthalf)#遞迴呼叫右半部分
#合併過程
i=0j=0
k=0while i < len(lefthalf) and j < len(righthalf):
if lefthalf[i] < righthalf[j]:
alist[k]=lefthalf[i]
i=i+1
else:
alist[k]=righthalf[j]
j=j+1
k=k+1
while i < len(lefthalf):
alist[k]=lefthalf[i]
i=i+1
k=k+1
while j < len(righthalf):
alist[k]=righthalf[j]
j=j+1
k=k+1
print("merging ",alist)
# 歸併排序演算法時間複雜度:n*lgn,空間複雜度:n,相同元素保持順序不變性
參考:
氣泡排序,插入排序 PYTHON
氣泡排序 使用 冒泡策略 把最大的元素移動到序列最右端。在一次冒泡過程中,相鄰元素進行比較。python a 5,4,12,3,5,6,9 def bubble sort num n len num for i in range n 1,0,1 for j in range 1,i 1 if num...
Python實現氣泡排序,選擇排序,插入排序
1.python實現氣泡排序 方法1array 4,5,2,3,8,9,1 def bubblesort array sort true while sort sort false for i in range len array 1 if array i array i 1 temp array ...
python實現插入排序 氣泡排序 快速排序
a 2,4,2,6,5,8,5,56,45,3,23 插入排序類似整理撲克牌,將每一張牌插到其他已經有序的牌中適當的位置。插入排序由n 1趟排序組成,對於p 1到n 1趟,插入排序保證從位置0到位置p上的元素為已排序狀態。簡單的說,就是插入排序總共需要排序n 1趟,從index為1開始,講該位置上的...