排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)
氣泡排序(Bubble Sort)
工作原理:
<1>.比較相鄰的元素。如果第一個比第二個大,就交換它們兩個;
<2>.對每一對相鄰元素作同樣的工作,從開始第一對到結尾的最後一對,這樣在最後的元素應該會是最大的數;
<3>.針對所有的元素重複以上的步驟,除了最後一個;
<4>.重複步驟1~3,直到排序完成。
obj = [10,4,29,5,7,80,34,19,8]
length = len(obj)
for i in range(length):
for j in range(length-1-i):
if obj[j] > obj[j+1]:
obj[j],obj[j+1] = obj[j+1], obj[j]
print(obj)
選擇排序(Selection-sort)
工作原理:
<1>首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,
<2>然後,再從剩餘未排序元素中繼續尋找最小(大)元素,
<3>然後放到已排序序列的末尾。以此類推,直到所有元素均排序完畢。
‘’’
obj = [10,4,29,5,7,80,34,19,8]
length = len(obj)
for i in range(length):
for j in range(i+1,length):
if obj[i] > obj[j]:
obj[i],obj[j] = obj[j], obj[i]
print(obj)
插入排序(Insertion-Sort)
工作原理:
<1>.從第一個元素開始,該元素可以認為已經被排序;
<2>.取出下一個元素,在已經排序的元素序列中從後向前掃描;
<3>.如果該元素(已排序)大於新元素,將該元素移到下一位置;
<4>.重複步驟3,直到找到已排序的元素小於或者等於新元素的位置;
<5>.將新元素插入到該位置後;
<6>.重複步驟2~5。
obj = [10,4,29,5,7,80,34,19,8]
length = len(obj)
for i in range(length):
for j in range(i,0,-1):
if obj[j-1]>obj[j]:
obj[j-1],obj[j] = obj[j], obj[j-1]
print(obj)
希爾排序(Shell Sort)
先取一個小於n的整數d1作為第一個增量,把檔案的全部記錄分組。所有距離為d1的倍數的記錄放在同一個組中。先在各組內進行直接插入排序;然後,取第二個增量d2<d1重複上述的分組和排序,直至所取的增量 =1( < …<d2<d1),即所有記錄放在同一組中進行直接插入排序為止一般的初次取序列的一半為增量,以後每次減半,直到增量為1。
def insertSort(l,length):#對每一種增量中的每一組各自進行排序
for i in range(len(l)//length):
for j in range(i,0,-length):
if l[j]<l[j-length]:
l[j],l[j-length] = l[j-length],l[j]
return l
obj = [10,4,29,5,7,80,34,19,8,10,11]
length = len(obj)#增量
while length>1:#迴圈所有增量的可能性
length//=2
result = insertSort(obj,length)
print(result)
相關文章
- php實現 氣泡排序,插入排序,選擇排序PHP排序
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- PHP 常見4種排序 氣泡排序、選擇排序、插入排序、快速排序PHP排序
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- 選擇排序和氣泡排序排序
- 氣泡排序與選擇排序排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 【小小前端】前端排序演算法第一期(氣泡排序、選擇排序、插入排序)前端排序演算法
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- 氣泡排序 插入排序 快排排序
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 氣泡排序和選擇排序流程圖排序流程圖
- 氣泡排序和選擇排序詳解排序
- 三種插入排序 直接插入排序,折半插入排序,希爾排序排序
- python實現氣泡排序、插入排序以及快速排序演算法Python排序演算法
- 排序演算法__希爾排序排序演算法
- 【排序演算法】- 希爾排序排序演算法
- 排序演算法--氣泡排序排序演算法
- 排序演算法__氣泡排序排序演算法
- 排序演算法–氣泡排序排序演算法
- Java實現氣泡排序和插入排序演算法Java排序演算法
- go 實現氣泡排序和插入排序Go排序
- 排序:氣泡排序&快速排序排序
- 排序——氣泡排序排序
- 桶排序 選擇,插入排序排序
- 【JS面試向】選擇排序、桶排序、氣泡排序和快速排序簡介JS面試排序
- 用JS實現氣泡排序和插入排序JS排序
- 經常提及的幾個js排序方法(氣泡排序、選擇排序、計數排序)JS排序
- 氣泡排序與選擇排序超詳細講解排序
- PHP 排序演算法之希爾排序PHP排序演算法
- Java排序演算法之氣泡排序Java排序演算法
- 七、排序,選擇、冒泡、希爾、歸併、快速排序實現排序
- 圖解選擇排序與插入排序圖解排序
- 排序演算法:Java實現希爾排序排序演算法Java
- 演算法之常見排序演算法-氣泡排序、歸併排序、快速排序演算法排序
- 希爾排序排序
- 氣泡排序排序