演算法導論 第二章演算法入門 合併排序

2021-05-25 15:34:02 字數 500 閱讀 3639

#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...