排序演算法(氣泡排序,選擇排序,插入排序,希爾排序)
氣泡排序(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排序
- 關於js陣列的六種演算法---水桶排序,氣泡排序,選擇排序,快速排序,插入排序,希爾排序的理解。JS陣列演算法排序
- 圖形化排序演算法比較:快速排序、插入排序、選擇排序、氣泡排序排序演算法
- PHP 常見4種排序 氣泡排序、選擇排序、插入排序、快速排序PHP排序
- 排序演算法 - 氣泡排序和選擇排序排序演算法
- JAVA小練習氣泡排序,選擇排序和插入排序Java排序
- Python八大演算法的實現,插入排序、希爾排序、氣泡排序、快速排序、直接選擇排序、堆排序、歸併排序、基數排序。Python演算法排序
- #排序演算法#【1】概述、氣泡排序、選擇排序排序演算法
- 選擇排序和氣泡排序排序
- 氣泡排序與選擇排序排序
- 氣泡排序和選擇排序排序
- 【小小前端】前端排序演算法第一期(氣泡排序、選擇排序、插入排序)前端排序演算法
- 9. 氣泡排序,以及如何優化氣泡排序,氣泡排序屬於插入排序排序優化
- 氣泡排序 插入排序 快排排序
- 氣泡排序和選擇排序詳解排序
- 氣泡排序和選擇排序流程圖排序流程圖
- 重學資料結構和演算法(四)之氣泡排序、插入排序、選擇排序資料結構演算法排序
- 排序演算法 - 快速插入排序和希爾排序排序演算法
- 八大排序演算法(1)_氣泡排序和選擇排序排序演算法
- java氣泡排序-選擇排序-插入排序-使用API中文文件直接呼叫函式Java排序API函式
- 【排序】插入類排序—(折半)插入排序、希爾排序排序
- python實現氣泡排序、插入排序以及快速排序演算法Python排序演算法
- 筆試之排序-直接插入排序、氣泡排序、快速排序筆試排序
- 排序演算法–氣泡排序排序演算法
- 排序演算法__氣泡排序排序演算法
- 排序演算法--氣泡排序排序演算法
- 排序演算法-氣泡排序排序演算法
- 排序演算法——氣泡排序排序演算法
- 【JS面試向】選擇排序、桶排序、氣泡排序和快速排序簡介JS面試排序
- Java實現氣泡排序和插入排序演算法Java排序演算法
- go 實現氣泡排序和插入排序Go排序
- 排序——氣泡排序排序
- 排序:氣泡排序&快速排序排序
- 演算法(三)初等排序後篇[選擇和氣泡排序]演算法排序
- 演算法--陣列氣泡排序和選擇排序原理分析演算法陣列排序
- 選擇排序和插入排序排序
- 桶排序 選擇,插入排序排序