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

歡迎訪問 生活随笔!

生活随笔

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

编程问答

看图轻松理解数据结构与算法系列(合并排序)

發布時間:2025/3/18 编程问答 60 豆豆
生活随笔 收集整理的這篇文章主要介紹了 看图轻松理解数据结构与算法系列(合并排序) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

前言

推出一個新系列,《看圖輕松理解數據結構和算法》,主要使用圖片來描述常見的數據結構和算法,輕松閱讀并理解掌握。本系列包括各種堆、各種隊列、各種列表、各種樹、各種圖、各種排序等等幾十篇的樣子。

合并排序

合并排序也叫歸并排序,它的主要思想是分治法,把待排序序列分為若干有序子序列,然后將兩個或兩個以上的有序子序列進行合并,得到一個新的完整的有序序列。所以首先得先對子序列進行排序,得到有序子序列,然后再使序列段之間有序。

排序要點

既然是分治法,那么就涉及到分和治。分,即遞歸地將序列分成小序列再求解;治,即遞歸地將分成的小序列合并到一起。

  • 設序列長度為L,將序列分為兩個長度為(L/2)的子序列。
  • 繼續遞歸地對兩個子序列分割,直至不能再繼續分割,此時每個子序列只有一個元素。
  • 對分割后的子序列進行遞歸地合并,按一定順序組合成有序子序列,有序子序列之間繼續合并。
  • 最終合并成一個完整的長度為L的有序序列。
  • 排序過程

    假設我們有如下8個元素,分別為84,25,59,71,62,16,34,45,現在進行合并排序。

    先將0到3分為子序列,4到7分為子序列,

    對于0到3子序列,繼續分為0到1的子序列,2到3的子序列,

    對于0到1子序列,繼續分為0子序列和1子序列,然后對這兩個子序列進行合并,兩個子序列都只有一個元素,一個元素的序列可以看成是有序序列,我們把它們合并成有序序列,25小,先提出來,

    然后是84,

    排好序的序列放回原來序列中,于是完成0和1子序列的合并操作,01變成有序子序列。接著處理2子序列和3子序列,

    59比較小,先提出來,

    然后是71,

    排好序的序列放回原來序列中,于是完成2和3子序列的合并操作,23變成有序子序列。

    接下去開始合并01有序子序列和23有序子序列,01序列中最小的元素25小于23序列中最小的元素59,于是25先提出來,

    01序列剩余元素中最小元素84大于23序列中最小的元素59,于是59提出來,

    84與71比較,提出71,

    最后提出84,

    于是完成0到3的合并,0到3變為有序序列,放回原序列中。接下去處理4到7的子序列,

    繼續分為4到5的子序列,6到7的子序列,

    對于45子序列,繼續分為4子序列和5子序列,然后對這兩個子序列進行合并,兩個子序列都只有一個元素,一個元素的序列可以看成是有序序列,我們把它們合并成有序序列,16小,先提出來,

    然后是62,

    排好序的序列放回原來序列中,于是完成4和5子序列的合并操作,45變成有序子序列。接著處理6子序列和7子序列,

    34較小,先提出來,

    然后是45,

    排好序的序列放回原來序列中,于是完成6和7子序列的合并操作,67變成有序子序列。

    接下去開始合并45有序子序列和67有序子序列,45序列中最小的元素16小于67序列中最小的元素34,于是16先提出來,

    45序列中剩余元素中最小元素62大于67序列中最小的元素34,于是34提出來,

    62與45比較,提出45,

    最后提出62,

    于是完成4到7的合并,4到7變為有序序列,放回原序列中。現在我們已經完成了0到3的有序序列和4到7的有序序列,接下去開始合并03序列和47序列,

    03序列最小元素25與47序列最小元素16比較,選出小的16,

    繼續比較兩個序列最小的元素,25與34比較,選出25,

    接著59與34比較,選出34,

    59與45比較,選出45,

    59與62比較,選出59,

    71與62比較,選出62,

    然后剩下的71和84不用比較了,因為47序列已經沒有元素了,直接按照原來順序提出來即可,

    最終完成排序。

    -------------推薦閱讀------------

    我的開源項目匯總(機器&深度學習、NLP、網絡IO、AIML、mysql協議、chatbot)

    為什么寫《Tomcat內核設計剖析》

    我的2017文章匯總——機器學習篇

    我的2017文章匯總——Java及中間件

    我的2017文章匯總——深度學習篇

    我的2017文章匯總——JDK源碼篇

    我的2017文章匯總——自然語言處理篇

    我的2017文章匯總——Java并發篇


    跟我交流,向我提問:

    歡迎關注:

    與50位技術專家面對面20年技術見證,附贈技術全景圖

    總結

    以上是生活随笔為你收集整理的看图轻松理解数据结构与算法系列(合并排序)的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。