#1、氣泡排序
def bubble_sort(arr):
n=len(arr)
for i in range(n):
for j in range(n-i-1):
if arr[j]>arr[j+1]:
arr[j],arr[j+1]=arr[j+1],arr[j]
return arr
a=[1,4,7,3,2,24,33]
sorted_list=bubble_sort(a)
print(sorted_list)
#2、選擇排序
def select_sort(arr):
n=len(arr)
for i in range(n):
min_idx=i
for j in range(i+1,n):
if arr[min_idx]>arr[j]:
min_idx=j
arr[i],arr[min_idx]=arr[min_idx],arr[i]
return arr
b=[9,34,1,5,8,8]
sorted_list=select_sort(b)
print(sorted_list)
#3、插入排序
def insert_sort(arr):
n=len(arr)
for i in range(1,n):
temp=arr[i]
j=i-1
while j>=0 and temp0 and len(right)>0:
#為了保持穩定性,當遇到相等的時候優先把左側的數放進結果列表,因為left本來也是大數列中比較靠左的
if left[0]<=right[0]:
else:
#while迴圈出來之後 說明其中乙個陣列沒有資料了,我們把另乙個陣列新增到結果陣列後面
result+=left
result+=right
return result
d=[9,78,5,3,2,1,4,7,9]
sorted_list=merge_sort(d)
print(sorted_list)
#5\快速排序
def quick_sort(arr,start,end):
# 遞迴的退出條件
if start>=end:
return
# 設定起始元素為要尋找位置的基準元素
mid=arr[start]
# low為序列左邊的由左向右移動的游標
low=start
# high為序列右邊的由右向左移動的游標
high=end
while low=mid:
high-=1
# 將high指向的元素放到low的位置上
arr[low]=arr[high]
# 如果low與high未重合,low指向的元素比基準元素小,則low向右移動
while low0:
for i in range(dist,n):
temp=arr[i]
j=iwhile j>=dist and temparr[j]=arr[j-dist]
j=j-dist
arr[j]=temp
dist=dist//2
return arr
blist=[23,1,3,4,77,2,3,1,0]
shell_sort(blist)
print(blist)
#6\堆排序
def heapify(arr,n,i):
largest=i
l=2*i+1
r=2*i+2
if llargest=l
if rlargest=r
if largest!=i:
arr[i],arr[largest]=arr[largest],arr[i]
heapify(arr,n,largest)
def heap_sort(arr):
n=len(arr)
#建立大頂堆
for i in range(n,-1,-1):
heapify(arr,n,i)
#乙個個交換元素
for i in range(n-1,0,-1):
arr[i],arr[0]=arr[0],arr[i]
heapify(arr,i,0)
clist=[12,2,1,34,7,4]
heap_sort(clist)
print(clist)
python實現的幾種排序演算法
此演算法為插入排序中的 直接插入排序 當然這是對於n很小的情況,但是當n很大的時候,可以用折半插入 就是對於直接插入排序的乙個改進,對於前乙個序列用直接插入排序 後面就不用這樣了,因為前面已經是乙個有序序列,可以折半方式提高 查詢效率 a b none 插入列表 insert list 7,3,5,...
Python實現幾種簡單的排序演算法
概念 為乙個無序的列表排成有序的 實現過程描述 公升序 1.比較相鄰的元素,如果第乙個比第二個大,就交換他們的位置 2.對每一對相鄰元素重複1的工作,從開始第一隊到最後一對,最後結束的時候最大的數會在後面 3.針對所有元素重複1,2的工作,除了最後乙個數,因為最後的數最大,省略這個過程 4.持續每次...
基於python的幾種排序演算法的實現
usr bin python3 coding utf 8 time 2019 3 28 10 26 author yosef 夜雨聲煩 email wurz529 foxmail.com file sort.py software pycharm defbubble sort arr 氣泡排序 pa...