歸併排序演算法簡單實現

2022-02-11 05:18:23 字數 1325 閱讀 4959

using

system;

using

system.collections.generic;

using

system.linq;

using

system.text;

namespace

mergesort

;mergesort(

refarr, 

0, arr.length -1

);foreach

(int

item 

inarr)

console.readkey();

}///

///歸併排序

//////

待排序陣列,閉區間

///排序開始位置

///結束位置

static

void

mergesort(

refint

arr, 

intstartindex, 

intendindex)

}///

///歸併兩個已經排序完成的陣列,閉區間

///[startindex, midindex], [midindex + 1, endindex]

//////

帶排序陣列

//////

///static

void

merge(

refint

arr, 

intstartindex,

intmidindex,

intendindex)

for(

inti =0

; i 

<

m; ++

i)//

設定哨兵資料

startarrcopy[n] 

=int

.maxvalue;

endarrcopy[m] 

=int

.maxvalue;

//將資料歸併到原陣列中

intk 

=startindex;  

//總長度

inta =0

, b =0

;   

//宣告兩個游標

while

( k 

<=

endindex )

else

++k;}}

}}更新:2010-5-17晚

將上面的歸併排序改寫成泛型的方法,新增到easycoding的程式庫中,並新增unit測試程式,測試通過,新增排序演算法的視覺化web頁面。下面是**:/files/xuqiang/mergesorter.rar

歸併排序演算法實現

const int maxn 100 將陣列a的 l1,r1 與 l2,r2 區間合併為有序區間 此處l2即為r1 1 void merge int a,int l1,int r1,int l2,int r2 while i r1 temp index a i 將 l1,r1 剩餘元素加入temp ...

歸併排序演算法實現

關於歸併排序演算法的思想,網上有很多介紹,這裡不再解釋,這裡提供了乙個j a類,讀者可以把類潛入到自己的程式中,直接呼叫,免去了重新編寫歸併排序的過程。具體的j a 如下 1 import j a.util.2class mergesort 2021 public static void merge...

歸併排序的簡單實現

學習遞迴最開始就是斐波那契和歸併排序。核心思想就是遞迴地把序列分成兩部分,直到只剩乙個元素。然後將每次劃分的兩部分再遞迴地合併起來,合併時候的順序覺決定了排序的順序還是逆序。劃分的過程可以看做是生成一顆葉子結點數為n的二叉樹,這個過程的複雜度為lgn 樹的高度 而合併的過程是相當於將每層的節點數相加...