歸併排序演算法的具體比較過程

2021-08-31 13:44:24 字數 787 閱讀 6240

不分享無用的東西

題目:3,1,4,1,5,9,6,5通過歸併排序對它進行從大到小的排序 要進行多少次數組元素之間的比較

第一趟:(3,1),(4,1),(5,9),(5,6) ,元素之間共比較了4次;

第二趟:(4,3,1,1),(9,6,5,5),元素之間共比較了6次;

為什麼是6次?

具體看下面

首先 left=(3,1),right=(4,1),temp陣列用於排序好的結果,目前為空,也就是()。

用left[0],,也就是3,和right[0],也就是4比較(1次),看哪個大,後加入到temp,同時從大的陣列中刪除該元素,這樣第在這裡插入**片一次比較下來,left=(3,1),right=(1),temp=(4);

同理,仍然用left[0]和right[0]比較,即3>1,將3加入temp,同時從left中刪除3,

這樣第二次比較下來,left=(1),right=(1),temp=(4,3);

繼續剩下的元素,left[0]=1和right[0]=1比較(第三次),得到1=1,取1加入temp,剩下的1自然就不用比較了,直接加入temp,

於是temp=(4,3,1,1),left=(),right=(),共進行3次比較。同理!

歸併排序及具體介紹

include include 複雜度分析 t n t n 2 t n 2 o n t n o nlogn 歸併作用是將兩個序列合併 l 左邊起始位置,r 右邊起始位置 rightend 右邊終點位置 void merge int a,int tmpa,int l,int r,int righten...

非比較排序 歸併排序

一 歸併排序的思想 歸併排序利用了分冶的思想,將一塊待排序的區間,取中間位置,分成兩段區間 然後通過不斷的遞迴,直到每段區間只有乙個數字,這時我們就認為該段區間有序,然後將這相鄰的兩段有序區間合併為乙個有序區間 這樣通過遞迴先 陣列,然後再合併陣列,就完成了歸併排序 二 實現 include inc...

歸併演算法 歸併排序

歸併演算法 歸併排序 這周需要用到歸併演算法,於是找了找相關的資料,整理如下 歸併排序 merge sort 是利用 歸併 技術來進行排序。歸併是指將若干個已排序的子檔案合併成乙個有序的檔案。兩路歸併演算法 1 演算法基本思路 設兩個有序的子檔案 相當於輸入堆 放在同一向量中相鄰的位置上 r low...