欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Python實(shí)現(xiàn)排序方法常見的四種

 更新時(shí)間:2021年07月15日 11:03:23   作者:小小程序員ol  
本文給大家分享python四種常見排序方法,每種方法通過實(shí)例代碼給大家介紹的非常詳細(xì),需要的朋友參考下吧

1.冒泡排序,相鄰位置比較大小,將比較大的(或小的)交換位置

def maopao(a):
    for i in range(0,len(a)):
        for j in range(0,len(a)-i-1):
            if a[j]>a[j+1]:
                temp = a[j+1]
                a[j+1] = a[j]
                a[j] = temp
                #print(a)
        #print(a)
    print(a)

2.選擇排序,遍歷選擇一個(gè)最小的數(shù)與當(dāng)前循環(huán)的第一個(gè)數(shù)交換

def xuanze(a):
    for i in range(0,len(a)):
        k=i
        temp = a[i]
        for j in range(i,len(a)):
            if a[j]<temp:
                temp = a[j]
                k = j
        a[k] = a[i]
        a[i] = temp
    print(a)

3.快速排序:將子段的第一個(gè)元素做為中值,先從右向左遍歷,如過比中值大high-1,如果比中值小,將這個(gè)值放到low那里。

然后從左向右開始遍歷,如果左側(cè)的比中值大,將他放到high那里。當(dāng)low>=high時(shí),將中值的值賦給low

(1.以下為參照公眾號中的做法:

a =[7,1,3,2,6,54,4,4,5,8,12,34]
def sort(a,low,high): 
    while low < high:
        temp = a[low]
        while low < high and a[high]>=temp:
            high = high-1
        a[low]=a[high]
        while low<high and a[low]<temp:
            low = low+1
        a[high]=a[low]           
        a[low]=temp
    return low
def quicksort(a,low,high):
    if low<high:
        middle = sort(a,low,high)
        quicksort(a,low,middle)
        quicksort(a,middle+1,high)
        print(a)
sort(a,0,len(a)-1)
quicksort(a,0,len(a)-1)
print(a)

(2.以下是參照網(wǎng)上的做法:

在做快速排序時(shí)一直各種問題,是因?yàn)榈毓衲抢餂]有考慮清楚,一直把low的值賦值為0了,實(shí)際上應(yīng)該是不固定的low值,他每個(gè)子循環(huán)不定。

'''
遇到問題沒人解答?小編創(chuàng)建了一個(gè)Python學(xué)習(xí)交流群:531509025
尋找有志同道合的小伙伴,互幫互助,群里還有不錯(cuò)的視頻學(xué)習(xí)教程和PDF電子書!
'''
a =[7,1,3,2,6,54,4,4,5,8,12,34]
def sort(a,low,high): 
    while low < high:
        temp = a[low]
        while low < high and a[high]>=temp:
            high = high-1
        while low<high and a[high]<temp:
            a[low]=a[high]           
            low =low+1
            a[high]=a[low]
        a[low]=temp
    return low
def quicksort(a,low,high):
    if low<high:
        middle = sort(a,low,high)
        quicksort(a,low,middle)
        quicksort(a,middle+1,high)
        print(a)
sort(a,0,len(a)-1)
quicksort(a,0,len(a)-1)
print(a)

4.插入排序:從左向右遍歷,依次選取數(shù)值,從數(shù)值的左側(cè)從右向左遍歷,選擇第一個(gè)比他小的數(shù)值的右側(cè)插入該數(shù)值,其他數(shù)值依次向后賦值

#插入排序
a =[7,1,3,2,6,54,4,4,5,8,12,34]
for i in range(0,len(a)-1):
    temp=a[i+1]
    j=i+1
    while j>=0 and temp<a[j-1]:
        j=j-1      
        print(j)
    if j>=-1:
        k= i+1
        while k>=j:
            a[k]=a[k-1]
            k=k-1
            print(a)
        a[j]=temp
print(a)

插入排序方法2,用到了列表的a.insert(1,2)和清楚a[2:3]=[],這樣可以少用一個(gè)循環(huán)

a =[7,1,3,2,6,54,4,4,5,8,12,34]
for i in range(1,len(a)-1):
    temp=a[i]
   
    j=i-1
    while j>=0 and temp<=a[j]:
        print(temp)
        j=j-1
    if j >=-1:
        a[i:i+1]=[]
        a.insert(j+1,temp)
        print(a)
print(a)

到此這篇關(guān)于Python實(shí)現(xiàn)排序的四種方法的文章就介紹到這了,更多相關(guān)python排序方法內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python實(shí)現(xiàn)隨機(jī)漫步的詳細(xì)過程

    Python實(shí)現(xiàn)隨機(jī)漫步的詳細(xì)過程

    隨機(jī)漫步顧名思義每一步都是隨機(jī)的,假設(shè)有一個(gè)點(diǎn),下一步往哪里走,走多遠(yuǎn),這些都沒有明確的表示,完全是隨機(jī)的,最后走到哪里,是由一系列隨機(jī)決策決定的,這篇文章主要給大家介紹了關(guān)于Python實(shí)現(xiàn)隨機(jī)漫步的相關(guān)資料,需要的朋友可以參考下
    2023-03-03
  • Python進(jìn)階篇之正則表達(dá)式常用語法總結(jié)

    Python進(jìn)階篇之正則表達(dá)式常用語法總結(jié)

    正則表達(dá)式是一個(gè)特殊的字符序列,它能幫助你方便的檢查一個(gè)字符串是否與某種模式匹配。本文為大家總結(jié)了一些正則表達(dá)式常用語法,希望有所幫助
    2022-08-08
  • 節(jié)日快樂! Python畫一棵圣誕樹送給你

    節(jié)日快樂! Python畫一棵圣誕樹送給你

    節(jié)日快樂!這篇文章主要介紹了如何使用Python畫一棵圣誕樹,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-12-12
  • Pytest?Fixture參數(shù)講解及使用

    Pytest?Fixture參數(shù)講解及使用

    這篇文章主要介紹了Pytest之Fixture參數(shù)詳解及使用,本文結(jié)合實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-01-01
  • PyQt5打開文件對話框QFileDialog實(shí)例代碼

    PyQt5打開文件對話框QFileDialog實(shí)例代碼

    這篇文章主要介紹了PyQt5打開文件對話框QFileDialog實(shí)例代碼,分享了相關(guān)代碼示例,小編覺得還是挺不錯(cuò)的,具有一定借鑒價(jià)值,需要的朋友可以參考下
    2018-02-02
  • 詳解Python GUI編程之PyQt5入門到實(shí)戰(zhàn)

    詳解Python GUI編程之PyQt5入門到實(shí)戰(zhàn)

    這篇文章主要介紹了詳解Python GUI編程之PyQt5入門到實(shí)戰(zhàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-12-12
  • python 使用遞歸實(shí)現(xiàn)打印一個(gè)數(shù)字的每一位示例

    python 使用遞歸實(shí)現(xiàn)打印一個(gè)數(shù)字的每一位示例

    今天小編就為大家分享一篇python 使用遞歸實(shí)現(xiàn)打印一個(gè)數(shù)字的每一位示例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-02-02
  • 利用Python實(shí)現(xiàn)獲取照片位置信息

    利用Python實(shí)現(xiàn)獲取照片位置信息

    Python中的exifread庫,不僅僅是 GPS 信息,幾乎能獲得圖片的所有信息。本文就將利用這個(gè)庫實(shí)現(xiàn)獲取照片位置信息,感興趣的可以了解一下
    2022-08-08
  • Python中unittest的數(shù)據(jù)驅(qū)動(dòng)詳解

    Python中unittest的數(shù)據(jù)驅(qū)動(dòng)詳解

    這篇文章主要介紹了Python中unittest的數(shù)據(jù)驅(qū)動(dòng)詳解,數(shù)據(jù)驅(qū)動(dòng)測試,是一種單元測試框架,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08
  • Django數(shù)據(jù)結(jié)果集序列化并展示實(shí)現(xiàn)過程

    Django數(shù)據(jù)結(jié)果集序列化并展示實(shí)現(xiàn)過程

    這篇文章主要介紹了Django數(shù)據(jù)結(jié)果集序列化并展示實(shí)現(xiàn)過程,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04

最新評論