日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

排序算法之low B三人组

發(fā)布時間:2024/9/5 编程问答 47 豆豆
生活随笔 收集整理的這篇文章主要介紹了 排序算法之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 l1

2. 選擇排序

一趟遍歷記錄中最小的數(shù),放到第一個位置
再一趟遍歷記錄剩余列表中最小的數(shù),繼續(xù)放置

def select_sort(l1):for i in range(len(l1)-1):mid=ifor j in range(i+1,len(l1)):if l1[j] <l1[mid]:mid=jl1[mid],l1[i]=l1[i],l1[mid]return l1

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)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。