#include
#include
#include
#include
using namespace std;
//讀入檔案
void inputfile(vector& vec)}}
//合併程式
void merge(vector& vec, int p, int r, int q)
for(j=1; j <= n2; j++)
//這個是作為哨兵
vec1[n1+1] = 1<<30;
vec2[n2+1] = 1<<30;
i = 1;
j = 1;
for(k=p; k <= q; k++)
else}}
//合併排序演算法
void mergesort(vector& vec, int p, int q)
}//輸出排序後的內容
void outputfile(vector& vec)
學習《演算法導論》第二章 合併排序 總結
分治策略 將原問題劃分成n個規模較小而結構與原問題相似的子問題 遞迴地解決這些子問題,然後再合併其結果,就得到原問題的解.分治模式一般有三個步驟 分解 將原問題分解成一系列子問題 解決 遞迴地解決各子問題 合併 將子問題的結果合併成原問題的解 合併排序直觀地操作如下 分解 將n個元素分成n 2個元素...
演算法導論第二章(歸併排序)
歸併排序,主要思想是分治法。相當於兩堆已排序好的撲克牌,每一次選擇兩堆牌頂上較小的那乙個,放到合併堆。最壞情況o nlogn 平均情況o nlogn package chapter2 public class mergesort mergesortfunction arr,0,9 for int i...
演算法導論第二章之歸併排序
歸併演算法即一種分治策略,將大問題劃分為n個小問題,然後對n小問題求解組合成大問題的解。在使用遞迴的分治排序中,涉及三個問題 一 小問題的不可劃分的或者終止條件 二 陣列的拆分 三 已排序的兩個陣列的合併。以下 是不使用遞迴的分治排序演算法,考慮可以結合多執行緒,使速度更快。package main...