排序算法之low B三人组
生活随笔
收集整理的這篇文章主要介紹了
排序算法之low B三人组
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
排序算法之low B三人組
排序low B三人組
列表排序:將無序列表變成有充列表
應(yīng)用場景:各種榜單,各種表格,給二分法排序使用,給其他算法使用
輸入無序列表,輸出有序列表(升序或降序)排序low B三人組
1. 冒泡排序
首先,列表每兩個相鄰的數(shù)做比較,如果前邊的數(shù)比后邊的數(shù)大,那么交換這兩個數(shù)
def bubble_sort(l1):for i in range(len(l1)-1):for j in range(len(l1)-i-1):if l1[j] > l1[j+1]:l1[j],l1[j+1]=l1[j+1],l1[j]return l1冒泡排序的優(yōu)化
如果冒泡排序中執(zhí)行一趟而沒有交換,則列表已經(jīng)是有序狀態(tài),可以直接結(jié)束排序
def bubble_sort_1(l1):for i in range(len(l1)-1):flag=Falsefor j in range(len(l1)-i-1):if l1[j] > l1[j+1]:l1[j],l1[j+1]=l1[j+1],l1[j]flag=Trueif not flag:return l12. 選擇排序
一趟遍歷記錄中最小的數(shù),放到第一個位置
再一趟遍歷記錄剩余列表中最小的數(shù),繼續(xù)放置
3. 插入排序
列表被分有有序區(qū)和無序區(qū)兩個部分.最初有序區(qū)只有一個元素
每次從無序區(qū)選擇一個元素,插入到有序區(qū)的位置,直到無序區(qū)變空
例如,最初時有一個無序列表l1=[5,7,4,6,3,1,2,9,8],其使用插入排序時的步驟為:
1.取無序列表l1中的第一個元素5,放入另一個有序列表tmp中 2.取無序列表l1中的第二個元素7,因為7比5大,把7放入有序列表tmp的第二個位置 3.取無序列表l1中的第三個元素4,因為4比5小,所以把4放入到有序列表tmp的元素5的左邊中,此時有序列表tmp為[4,5,7] 4.取l1中第四個元素6,因為6比5大,又比7小,把6放入到元素5和7之間,此時tmp變成了[4,5,6,7] ... 每次從無序區(qū)中選擇一個元素,插入到有序區(qū)的某個位置,直到無序區(qū)變空 def insert_sort(li):for i in range(1, len(li)):tmp = li[i]j = i - 1 #手里最后一張while j>=0 and li[j]>tmp:li[j+1]=li[j]j = j-1li[j+1] = tmpreturn li轉(zhuǎn)載于:https://www.cnblogs.com/zgd1234/p/8583024.html
總結(jié)
以上是生活随笔為你收集整理的排序算法之low B三人组的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 解决mysql报错Can’t conne
- 下一篇: openstack热迁移配置注意事项