亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

搜索

用Python實(shí)現(xiàn)快速排序

PHPz
發(fā)布: 2023-06-10 16:36:21
原創(chuàng)
6771人瀏覽過(guò)

快速排序是一種常用的排序算法,其時(shí)間復(fù)雜度為 o(nlogn)。在實(shí)際應(yīng)用中,快速排序通常比其他排序算法快得多。python 提供了許多內(nèi)置的排序函數(shù),但了解和實(shí)現(xiàn)快速排序仍然很重要。在本文中,我們將通過(guò) python 實(shí)現(xiàn)快速排序算法。

快速排序的工作原理是選定一個(gè)基準(zhǔn)值(pivot),然后將列表中所有小于基準(zhǔn)值的元素放在一個(gè)子列表中,將所有大于基準(zhǔn)值的元素放在另一個(gè)子列表中。然后對(duì)這兩個(gè)子列表遞歸進(jìn)行快速排序。最終,所有子列表都將被遞歸排序,然后合并成一個(gè)排好序的列表。

以下是用 Python 實(shí)現(xiàn)快速排序的代碼:

def quick_sort(arr):
    if len(arr) < 2:
        return arr
    else:
        pivot = arr[0]
        less = [i for i in arr[1:] if i <= pivot]
        greater = [i for i in arr[1:] if i > pivot]
        return quick_sort(less) + [pivot] + quick_sort(greater)
登錄后復(fù)制

在上面的代碼中,我們首先檢查列表的長(zhǎng)度。如果列表長(zhǎng)度小于 2,我們就返回原列表。否則,我們選擇列表的第一個(gè)元素作為基準(zhǔn)值(pivot)。然后,我們使用列表推導(dǎo)式將小于等于基準(zhǔn)值的元素放入一個(gè)列表中,并將大于基準(zhǔn)值的元素放入另一個(gè)列表中。接下來(lái),我們遞歸將較小和較大的列表進(jìn)行排序,并將排好序的列表連接在一起,基準(zhǔn)值置于連接的列表中間。

這個(gè)算法需要選擇一個(gè)合適的基準(zhǔn)數(shù)。如果選擇的基準(zhǔn)數(shù)恰好是列表中的最大(或最?。┲?,那么遞歸排序的子列表大小只減少了 1。這種情況下,快速排序算法的時(shí)間復(fù)雜度可能會(huì)退化為 O(n2)。為了避免這種情況,我們可以使用隨機(jī)選取基準(zhǔn)值的方法。這個(gè)方法在基準(zhǔn)值不是列表中的最大(或最?。┲档那闆r下,平均地保證了遞歸排序的子列表大小。

立即學(xué)習(xí)Python免費(fèi)學(xué)習(xí)筆記(深入)”;

簡(jiǎn)篇AI排版
簡(jiǎn)篇AI排版

AI排版工具,上傳圖文素材,秒出專(zhuān)業(yè)效果!

簡(jiǎn)篇AI排版134
查看詳情 簡(jiǎn)篇AI排版

以下是使用隨機(jī)選擇基準(zhǔn)值的 Python 代碼:

import random

def quick_sort(arr):
    if len(arr) < 2:
        return arr
    else:
        pivot_index = random.randint(0, len(arr) - 1)
        pivot = arr[pivot_index]
        less = [i for i in arr[:pivot_index] + arr[pivot_index + 1:] if i <= pivot]
        greater = [i for i in arr[:pivot_index] + arr[pivot_index + 1:] if i > pivot]
        return quick_sort(less) + [pivot] + quick_sort(greater)
登錄后復(fù)制

在上面的代碼中,我們先使用 random.randint() 函數(shù)隨機(jī)選擇一個(gè)基準(zhǔn)值。然后,我們將小于等于基準(zhǔn)值的元素放入一個(gè)列表中,并將大于基準(zhǔn)值的元素放入另一個(gè)列表中,這與前面那個(gè)實(shí)現(xiàn)方法是類(lèi)似的。

總結(jié)一下,我們通過(guò) Python 實(shí)現(xiàn)了快速排序算法,并使用隨機(jī)選擇基準(zhǔn)值的方法避免了遞歸排序的子列表的大小不均衡的情況。這個(gè)算法是基于分治(Divide and Conquer)思想的,它能夠在平均情況下以 O(nlogn) 的時(shí)間復(fù)雜度快速對(duì)列表進(jìn)行排序。

以上就是用Python實(shí)現(xiàn)快速排序的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

相關(guān)標(biāo)簽:
python速學(xué)教程(入門(mén)到精通)
python速學(xué)教程(入門(mén)到精通)

python怎么學(xué)習(xí)?python怎么入門(mén)?python在哪學(xué)?python怎么學(xué)才快?不用擔(dān)心,這里為大家提供了python速學(xué)教程(入門(mén)到精通),有需要的小伙伴保存下載就能學(xué)習(xí)啦!

下載
來(lái)源:php中文網(wǎng)
本文內(nèi)容由網(wǎng)友自發(fā)貢獻(xiàn),版權(quán)歸原作者所有,本站不承擔(dān)相應(yīng)法律責(zé)任。如您發(fā)現(xiàn)有涉嫌抄襲侵權(quán)的內(nèi)容,請(qǐng)聯(lián)系admin@php.cn
最新問(wèn)題
開(kāi)源免費(fèi)商場(chǎng)系統(tǒng)廣告
最新下載
更多>
網(wǎng)站特效
網(wǎng)站源碼
網(wǎng)站素材
前端模板
關(guān)于我們 免責(zé)申明 意見(jiàn)反饋 講師合作 廣告合作 最新更新
php中文網(wǎng):公益在線php培訓(xùn),幫助PHP學(xué)習(xí)者快速成長(zhǎng)!
關(guān)注服務(wù)號(hào) 技術(shù)交流群
PHP中文網(wǎng)訂閱號(hào)
每天精選資源文章推送
PHP中文網(wǎng)APP
隨時(shí)隨地碎片化學(xué)習(xí)
PHP中文網(wǎng)抖音號(hào)
發(fā)現(xiàn)有趣的

Copyright 2014-2025 http://ipnx.cn/ All Rights Reserved | php.cn | 湘ICP備2023035733號(hào)