演算法導論第二章(歸併排序)

2021-08-10 19:57:47 字數 651 閱讀 6674

歸併排序,主要思想是分治法。相當於兩堆已排序好的撲克牌,每一次選擇兩堆牌頂上較小的那乙個,放到合併堆。

最壞情況o(nlogn),平均情況o(nlogn)。

package chapter2;

public class mergesort

mergesortfunction(arr, 0, 9);

for (int i = 0; i < arr.length; i++)

} private static void mergesortfunction(int arr, int p, int r)

} private static void merge(int arr, int p, int q, int r)

arrleft[q - p + 1] = integer.max_value;

int arrright = new int[10];

for (int j = 0; j < r - q; j++)

arrright[r - q] = integer.max_value;

int n = 0;

int m = 0;

for (int k = p; k < r + 1; k++) else

} }}

演算法導論第二章之歸併排序

歸併演算法即一種分治策略,將大問題劃分為n個小問題,然後對n小問題求解組合成大問題的解。在使用遞迴的分治排序中,涉及三個問題 一 小問題的不可劃分的或者終止條件 二 陣列的拆分 三 已排序的兩個陣列的合併。以下 是不使用遞迴的分治排序演算法,考慮可以結合多執行緒,使速度更快。package main...

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

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 這個是作為哨兵...

學習《演算法導論》第二章 合併排序 總結

分治策略 將原問題劃分成n個規模較小而結構與原問題相似的子問題 遞迴地解決這些子問題,然後再合併其結果,就得到原問題的解.分治模式一般有三個步驟 分解 將原問題分解成一系列子問題 解決 遞迴地解決各子問題 合併 將子問題的結果合併成原問題的解 合併排序直觀地操作如下 分解 將n個元素分成n 2個元素...