最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python?歸并排序的實現(xiàn)

 更新時間:2024年06月18日 08:28:52   作者:youyouxiong  
歸并排序是一種分治算法,它將數(shù)組分成兩半,分別對這兩半進(jìn)行排序,然后將排序后的兩半合并在一起,本文就來介紹一下python?歸并排序的實現(xiàn),具有一定的參考價值,感興趣的可以了解一下

一、歸并排序

歸并排序(MERGE-SORT)是建立在歸并操作上的一種有效的排序算法,該算法采用經(jīng)典的分治(divide-and-conquer)策略(分治法將問題分(divide)成一些小的問題然后遞歸求解,而治(conquer)的階段則將分的階段得到的各答案"修補"在一起,即分而治之),將已有序的子序列合并,得到完全有序的序列;即先使每個子序列有序,再使子序列段間有序,若將兩個有序表合并成一個有序表,稱為二路歸并。

二、歸并排序的基本思想

將待排序序列R[0…n-1]看成是n個長度為1的有序序列,將相鄰的有序表成對歸并,得到n/2個長度為2的有序表;將這些有序序列再次歸并,得到n/4個長度為4的有序序列;如此反復(fù)進(jìn)行下去,最后得到一個長度為n的有序序列

三、歸并排序的算法描述

第一步:申請空間,使其大小為兩個已經(jīng)排序序列之和,該空間用來存放合并后的序列
第二步:設(shè)定兩個指針,最初位置分別為兩個已經(jīng)排序序列的起始位置
第三步:比較兩個指針?biāo)赶虻脑兀x擇相對小的元素放入到合并空間,并移動指針到下一位置
重復(fù)步驟3直到某一指針超出序列尾,將另一序列剩下的所有元素直接復(fù)制到合并序列尾

歸并排序其實要做兩件事:

(1)“分解”——將序列每次折半劃分(遞歸實現(xiàn))

(2)“合并”——將劃分后的序列段兩兩合并后排序

如何合并?
在每次合并過程中,都是對兩個有序的序列段進(jìn)行合并,然后排序。

這兩個有序序列段分別為 R[low, mid] 和 R[mid+1, high]。

先將他們合并到一個局部的暫存數(shù)組R2中,帶合并完成后再將R2復(fù)制回R中。

我們稱 R[low, mid] 第一段,R[mid+1, high] 為第二段。

每次從兩個段中取出一個記錄進(jìn)行關(guān)鍵字的比較,將較小者放入R2中,最后將各段中余下的部分直接復(fù)制到R2中。

經(jīng)過這樣的過程,R2已經(jīng)是一個有序的序列,再將其復(fù)制回R中,一次合并排序就完成了。

四、代碼實現(xiàn)過程(python)

def merge_sort(arr):
    if len(arr) > 1:
        mid = len(arr) // 2  # 找到中間索引
        L = arr[:mid]  # 左半部分
        R = arr[mid:]  # 右半部分

        merge_sort(L)  # 遞歸地排序左半部分
        merge_sort(R)  # 遞歸地排序右半部分

        # 合并兩個有序數(shù)組
        i = j = k = 0

        # 復(fù)制數(shù)據(jù)到臨時數(shù)組L[]
        while i < len(L) and j < len(R):
            if L[i] < R[j]:
                arr[k] = L[i]
                i += 1
            else:
                arr[k] = R[j]
                j += 1
            k += 1

        # 復(fù)制左半部分剩余的數(shù)據(jù)
        while i < len(L):
            arr[k] = L[i]
            i += 1
            k += 1

        # 復(fù)制右半部分剩余的數(shù)據(jù)
        while j < len(R):
            arr[k] = R[j]
            j += 1
            k += 1

# 測試代碼
arr = [12, 11, 13, 5, 6, 7]
print("未排序的數(shù)組:", arr)
merge_sort(arr)
print("排序后的數(shù)組:", arr)

這個例子中,merge_sort函數(shù)首先找到數(shù)組的中間索引,然后將數(shù)組分為兩部分,遞歸地對這兩部分進(jìn)行排序。最后,使用一個循環(huán)將排序后的兩個數(shù)組合并為一個有序數(shù)組。

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

相關(guān)文章

  • Python中關(guān)于元組 集合 字符串 函數(shù) 異常處理的全面詳解

    Python中關(guān)于元組 集合 字符串 函數(shù) 異常處理的全面詳解

    本篇文章介紹了我在學(xué)習(xí)python過程中對元組、集合、字符串、函數(shù)、異常處理的總結(jié),通讀本篇對大家的學(xué)習(xí)或工作具有一定的價值,需要的朋友可以參考下
    2021-10-10
  • Django搭建MySQL主從實現(xiàn)讀寫分離

    Django搭建MySQL主從實現(xiàn)讀寫分離

    本文主要介紹了Django搭建MySQL主從實現(xiàn)讀寫分離,文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2021-08-08
  • Python編程實現(xiàn)從字典中提取子集的方法分析

    Python編程實現(xiàn)從字典中提取子集的方法分析

    這篇文章主要介紹了Python編程實現(xiàn)從字典中提取子集的方法,結(jié)合實例形式對比分析了Python采用字典推導(dǎo)式與序列轉(zhuǎn)換實現(xiàn)字典提取子集的相關(guān)操作技巧與優(yōu)缺點,需要的朋友可以參考下
    2018-02-02
  • python常用的正則表達(dá)式大全

    python常用的正則表達(dá)式大全

    正則表達(dá)式是一個特殊的字符序列,它能幫助你方便的檢查一個字符串是否與某種模式匹配,下面這篇文章主要給大家介紹了關(guān)于python常用正則表達(dá)式的相關(guān)資料,文中通過圖文以及實例代碼介紹的非常詳細(xì),需要的朋友可以參考下
    2022-02-02
  • Python連接Spark的7種方法大全

    Python連接Spark的7種方法大全

    Apache Spark 是一個強大的分布式計算框架,廣泛用于大規(guī)模數(shù)據(jù)處理,通過 PySpark,Python 開發(fā)者能夠無縫接入 Spark 生態(tài)系統(tǒng),本文給大家介紹了Python連接Spark的7種方法,從入門到生產(chǎn)級部署,需要的朋友可以參考下
    2025-11-11
  • Python實現(xiàn)批量翻譯CAD圖紙

    Python實現(xiàn)批量翻譯CAD圖紙

    這篇文章主要為大家詳細(xì)介紹了如何通過Python實現(xiàn)批量翻譯CAD圖紙,文中的示例代碼講解詳細(xì),具有一定的借鑒價值,感興趣的小伙伴可以學(xué)習(xí)一下
    2023-12-12
  • Python中從文件路徑中提取文件名及擴展名的多種方法

    Python中從文件路徑中提取文件名及擴展名的多種方法

    在文件處理或路徑解析過程中,提取文件名和擴展名是一個常見且基本的操作,本文將介紹如何通過字符串操作提取文件名(包括擴展名)及文件名的部分內(nèi)容,同時還將討論一些常見的應(yīng)用場景,需要的朋友可以參考下
    2025-03-03
  • 利用Fn.py庫在Python中進(jìn)行函數(shù)式編程

    利用Fn.py庫在Python中進(jìn)行函數(shù)式編程

    這篇文章主要介紹了利用Fn.py庫在Python中進(jìn)行函數(shù)式編程,基于Scala中的類似風(fēng)格,需要的朋友可以參考下
    2015-04-04
  • pytorch查看torch.Tensor和model是否在CUDA上的實例

    pytorch查看torch.Tensor和model是否在CUDA上的實例

    今天小編就為大家分享一篇pytorch查看torch.Tensor和model是否在CUDA上的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-01-01
  • python使用difflib實現(xiàn)自動查重

    python使用difflib實現(xiàn)自動查重

    Python中有許多現(xiàn)成的庫和工具,可以方便地實現(xiàn)自動查重的功能,其中,difflib庫就是一個專門用于比較文件和字符串差異的庫,下面我們就來看看如何利用difflib實現(xiàn)自動查重吧
    2023-11-11

最新評論

河北省| 铁岭市| 海丰县| 郸城县| 祁阳县| 永登县| 南开区| 广灵县| 前郭尔| 大同县| 交口县| 深水埗区| 安丘市| 聂荣县| 将乐县| 虞城县| 伊春市| 冀州市| 塘沽区| 岑溪市| 彩票| 贺州市| 贡山| 芜湖县| 高清| 平舆县| 敖汉旗| 白朗县| 舒兰市| 阳山县| 四川省| 乐亭县| 涞水县| 庐江县| 龙岩市| 吐鲁番市| 墨江| 沛县| 滁州市| 潞西市| 凤凰县|