排序演算法 合併排序

2021-06-04 23:37:03 字數 626 閱讀 9336

這個排序比起冒泡,選擇什麼的就快很多了,時間複雜度是n*logn,但是實現起來也很複雜。

原理是:第一步,合併1、2|3、4| 5、6....(相鄰兩個排序)

第二步,合併1、2、3、4|5、6、7、8|9...(相鄰四個排序)..

.實現起來最主要的是合併的函式,廢話不多說,看**:

class mergersorter

private void domergesort(ref int numbers, int start,int end)

}//part2_start=part1_end+1,即合併兩部分的是相連的,且各自部分是已排序的。

private void merge(ref int numbers, int part1_start, int part1_end,int part2_end)

else

postemp++;

}//第一段沒比較完

if (pos1 <= part1_end)

}//第二段沒比較完

if (pos2 <= part2_end)

}//寫回

for (int i = 0; i < postemp; i++)

}}

排序演算法 合併排序

說明 之前所介紹的排序法都是在同乙個陣列中的排序,考慮今日有兩筆或兩筆以上的資料,它可能是不同陣列中的資料,或是不同檔案中的資料,如何為它們進行排序?解法 可以使用合併排序法,合併排序法基本是將兩筆已排序的資料合併並進行排序,如果所讀入的資料尚未排序,可以先利用其它的排序方式來處理這兩筆資料,然後再...

合併排序演算法

陣列ary的m個元素,ary p ary q ary q 1 ary r 已按曾序排序 使得ary p ary r 按曾序排列 void clibrary merge int ary,int p,int q,int r,int m else k 0 for i p i r i ary i bp k ...

合併排序演算法

主要思想 不斷將已經有序的子陣列a p.q 和a q 1.r 合併為新的有序的陣列a p.r 具體過程可如下操作 分解 將n個元素分成各含n 2個元素的子串行 解決 對兩個子陣列遞迴地排序 合併 合併兩個已經有序的子陣列得到最終的有序陣列。合併 歸併排序 分治策略 include include u...