国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

深入探討Python中的主流排序算法

這篇具有很好參考價值的文章主要介紹了深入探討Python中的主流排序算法。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點(diǎn)擊"舉報違法"按鈕提交疑問。

當(dāng)我們處理數(shù)據(jù)時,經(jīng)常需要對數(shù)據(jù)進(jìn)行排序。排序是一種常見的數(shù)據(jù)操作,可以幫助我們更好地理解和分析數(shù)據(jù)。Python提供了多種排序方法,本文將介紹一些主流的排序算法,并展示如何在Python中使用它們。

1. 冒泡排序(Bubble Sort)

冒泡排序是最簡單的排序算法之一。它的基本思想是重復(fù)遍歷待排序的列表,比較相鄰的元素,并在必要時交換它們,直到列表已完全排序。

def bubble_sort(arr):
    n = len(arr)
    for i in range(n):
        for j in range(0, n - i - 1):
            if arr[j] > arr[j + 1]:
                arr[j], arr[j + 1] = arr[j + 1], arr[j]

arr = [64, 34, 25, 12, 22, 11, 90]
bubble_sort(arr)
print("冒泡排序后的列表:", arr)

2. 插入排序(Insertion Sort)

插入排序是一種簡單且高效的排序算法,適用于小型數(shù)據(jù)集。它通過將元素逐個插入已排序的部分來構(gòu)建有序列表。

def insertion_sort(arr):
    for i in range(1, len(arr)):
        key = arr[i]
        j = i - 1
        while j >= 0 and key < arr[j]:
            arr[j + 1] = arr[j]
            j -= 1
        arr[j + 1] = key

arr = [64, 34, 25, 12, 22, 11, 90]
insertion_sort(arr)
print("插入排序后的列表:", arr)

3. 快速排序(Quick Sort)

快速排序是一種常用的高效排序算法,基于分治法的思想。它將列表分成較小的子列表,然后對這些子列表進(jìn)行排序,最終合并成一個有序列表。

def quick_sort(arr):
    if len(arr) <= 1:
        return arr
    pivot = arr[len(arr) // 2]
    left = [x for x in arr if x < pivot]
    middle = [x for x in arr if x == pivot]
    right = [x for x in arr if x > pivot]
    return quick_sort(left) + middle + quick_sort(right)

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = quick_sort(arr)
print("快速排序后的列表:", sorted_arr)

4. 歸并排序(Merge Sort)

歸并排序是一種分治算法,它將列表分成較小的子列表,然后逐步合并這些子列表以獲得有序列表。文章來源地址http://www.zghlxwxcb.cn/news/detail-702623.html

def merge_sort(arr):
    if len(arr) <= 1:
        return arr

    mid = len(arr) // 2
    left_half = arr[:mid]
    right_half = arr[mid:]

    left_half = merge_sort(left_half)
    right_half = merge_sort(right_half)

    return merge(left_half, right_half)

def merge(left, right):
    result = []
    left_idx, right_idx = 0, 0
    while left_idx < len(left) and right_idx < len(right):
        if left[left_idx] < right[right_idx]:
            result.append(left[left_idx])
            left_idx += 1
        else:
            result.append(right[right_idx])
            right_idx += 1
    result.extend(left[left_idx:])
    result.extend(right[right_idx:])
    return result

arr = [64, 34, 25, 12, 22, 11, 90]
sorted_arr = merge_sort(arr)
print("歸并排序后的列表:", sorted_arr)

到了這里,關(guān)于深入探討Python中的主流排序算法的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點(diǎn)僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務(wù),不擁有所有權(quán),不承擔(dān)相關(guān)法律責(zé)任。如若轉(zhuǎn)載,請注明出處: 如若內(nèi)容造成侵權(quán)/違法違規(guī)/事實(shí)不符,請點(diǎn)擊違法舉報進(jìn)行投訴反饋,一經(jīng)查實(shí),立即刪除!

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

  • 【深入探討】JavaScript 中的 forEach 和 map 區(qū)別

    【深入探討】JavaScript 中的 forEach 和 map 區(qū)別

    ?? 個人主頁: 不叫貓先生 ,公眾號: 前端Clodplay ???♂? 作者簡介:前端領(lǐng)域優(yōu)質(zhì)作者、阿里云專家博主,共同學(xué)習(xí)共同進(jìn)步,一起加油呀! ?優(yōu)質(zhì)專欄:VS Code插件開發(fā)極速入門 ?? 資料領(lǐng)?。呵岸诉M(jìn)階資料可以找我免費(fèi)領(lǐng)取 map會返回一個新的數(shù)組,而forEach不會 。

    2024年04月28日
    瀏覽(24)
  • 深入探討機(jī)器學(xué)習(xí)中的過擬合現(xiàn)象及其解決方法

    深入探討機(jī)器學(xué)習(xí)中的過擬合現(xiàn)象及其解決方法

    過擬合 ( Overfitting )是指在機(jī)器學(xué)習(xí)中,模型在訓(xùn)練集上表現(xiàn)較好,但在測試集或?qū)嶋H應(yīng)用中表現(xiàn)較差的現(xiàn)象。過擬合發(fā)生時,模型過于復(fù)雜地學(xué)習(xí)了訓(xùn)練集中的噪聲、異常值或特定模式,從而導(dǎo)致對新樣本的泛化能力下降。 過擬合通常是由于模型在訓(xùn)練過程中過于強(qiáng)調(diào)訓(xùn)

    2024年02月03日
    瀏覽(25)
  • 深入探討 Oxigen:Rust 實(shí)現(xiàn)的并行遺傳算法框

    第一部分:引言及Oxigen框架概覽 隨著遺傳算法在許多領(lǐng)域(如優(yōu)化、機(jī)器學(xué)習(xí)和人工智能)的應(yīng)用日益增多,其性能和效率成為了關(guān)鍵焦點(diǎn)。Oxigen 是一個用 Rust 語言實(shí)現(xiàn)的并行遺傳算法框架,其提供了高效的并行計算機(jī)制,讓遺傳算法的實(shí)現(xiàn)和優(yōu)化變得更加便捷。 為什么選

    2024年02月12日
    瀏覽(23)
  • 【Spring 篇】深入探討MyBatis映射文件中的動態(tài)SQL

    【Spring 篇】深入探討MyBatis映射文件中的動態(tài)SQL

    MyBatis,這個名字在Java開發(fā)者的世界中猶如一道光芒,照亮著持久層操作的道路。而在MyBatis的映射文件中,動態(tài)SQL則是一個讓人愛-hate的存在。有時候,你感嘆它的靈活性,有時候,你可能會為它的繁瑣而頭痛。但別擔(dān)心,我們將在本文中一起揭開動態(tài)SQL的神秘面紗,帶你領(lǐng)

    2024年01月24日
    瀏覽(36)
  • 深入探討:Hessian 矩陣在凸性優(yōu)化中的重要作用

    凸性優(yōu)化是一種廣泛應(yīng)用于計算機(jī)科學(xué)、數(shù)學(xué)、經(jīng)濟(jì)學(xué)等領(lǐng)域的優(yōu)化方法。它主要解決的問題是在一個凸函數(shù)空間中找到一個局部最小值或全局最小值。凸性優(yōu)化的一個關(guān)鍵步驟是通過計算函數(shù)的二階導(dǎo)數(shù)來確定函數(shù)在某一點(diǎn)的凸性或凹性。這里的二階導(dǎo)數(shù)通常表示為 Hessi

    2024年02月19日
    瀏覽(25)
  • 【深入探討人工智能】AI大模型在自動駕駛中的應(yīng)用

    【深入探討人工智能】AI大模型在自動駕駛中的應(yīng)用

    當(dāng)今, AI大模型 是一個火熱的。隨著人工智能的迅猛發(fā)展,AI大模型在各個領(lǐng)域展現(xiàn)出了巨大的潛力和應(yīng)用價值。在自動駕駛領(lǐng)域,AI大模型的應(yīng)用驅(qū)動自動駕駛算法具備更強(qiáng)的泛化能力。 那么 AI大模型 為自動駕駛賦能了什么?它的未來發(fā)展前景又是怎樣? 本文將以

    2024年02月08日
    瀏覽(42)
  • 深入理解Java類加載機(jī)制中的雙親委派模型--根據(jù)源碼探討

    深入理解Java類加載機(jī)制中的雙親委派模型--根據(jù)源碼探討

    前言: 今天和大家探討一道Java中經(jīng)典的面試題,這道面試題經(jīng)常出現(xiàn)在各個公司的面試中,本篇文章主要講解 ava類加載機(jī)制中的雙親委派模型 的知識。該專欄比較適合剛?cè)肟覬ava的小白以及準(zhǔn)備秋招的大佬閱讀。 如果文章有什么需要改進(jìn)的地方歡迎大佬提出,對大佬有幫助

    2024年02月14日
    瀏覽(26)
  • 深入了解 Python MongoDB 操作:排序、刪除、更新、結(jié)果限制全面解析

    使用 sort() 方法對結(jié)果進(jìn)行升序或降序排序。 sort() 方法接受一個參數(shù)用于“字段名”,一個參數(shù)用于“方向”(升序是默認(rèn)方向)。 示例 按名稱按字母順序?qū)Y(jié)果進(jìn)行排序: 要刪除一個文檔,我們使用 delete_one() 方法。 delete_one() 方法的第一個參數(shù)是一個查詢對象,用于定

    2024年01月15日
    瀏覽(25)
  • 深入探討虛擬現(xiàn)實(shí)中的新型安全威脅:“盜夢攻擊”及其防御策略

    深入探討虛擬現(xiàn)實(shí)中的新型安全威脅:“盜夢攻擊”及其防御策略

    隨著虛擬現(xiàn)實(shí)(VR)技術(shù)的飛速發(fā)展,用戶體驗(yàn)達(dá)到了前所未有的沉浸水平,但也暴露在一系列新的安全威脅之下。本文著重介紹了近期出現(xiàn)的一種高度隱秘且影響深遠(yuǎn)的攻擊手段——“盜夢攻擊”。這一概念由芝加哥大學(xué)的研究人員提出,揭示了攻擊者如何通過操控VR環(huán)境,

    2024年04月26日
    瀏覽(14)
  • python算法 - 插入排序算法

    插入排序的基本概念:有一個已經(jīng)有序的數(shù)據(jù)序列,要求在這個已經(jīng)排好的數(shù)據(jù)序列中插入一個數(shù),但要求插入后此數(shù)據(jù)序列仍然有序,這個時候就要用到一種新的排序方法——插入排序法,插入排序的基本操作就是將一個數(shù)據(jù)插入到已經(jīng)排好序的有序數(shù)據(jù)中,從而得到一個新

    2024年02月12日
    瀏覽(16)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領(lǐng)取紅包,優(yōu)惠每天領(lǐng)

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包