void merge(int array, int first, int mid, int last)
else
index++; }
while (first2 <= last2)//1
while (first1 <= last1)//2
cout << endl;
for (index = first; index <= last; index++)//這裡index的值也是相同理由。
cout << endl;
}void mergesort(int array, int first, int last)
{ if (first < last)
{ int mid = first + (last - first) / 2;
cout << "1 "<
首先遞迴,可以很明顯看出,遞迴是從第乙個函式一層一層執行下去,直至變為乙個元素。
在執行第二個函式,再次生成單元素陣列;
執行第三個函式合併陣列,
重複,直至到函式執行結束。
在合併函式中,
第二個和第三個迴圈是用來將未存入臨時陣列的資料存入,因為是有序陣列,
所以只存在乙個陣列為完全存入,且資料已完成排序,即之後元素之直接複製就好,
不在需要任何操作。
則這兩個迴圈可以互調位置,不影響程式結果。
程式**來至c++資料抽象與問題求解(第六版)
歸併排序心得
歸併排序 歸併方法 public abstract class mergesort extends sort f or int k l k h k else if j h else if aux i compareto aux j 0 else 歸併 先分兩個陣列 分別排序 再進行歸併 5 6 7 ...
歸併演算法 歸併排序
歸併演算法 歸併排序 這周需要用到歸併演算法,於是找了找相關的資料,整理如下 歸併排序 merge sort 是利用 歸併 技術來進行排序。歸併是指將若干個已排序的子檔案合併成乙個有序的檔案。兩路歸併演算法 1 演算法基本思路 設兩個有序的子檔案 相當於輸入堆 放在同一向量中相鄰的位置上 r low...
歸併排序演算法
include stdafx.h include include include 合併兩段已經排好序的列表 void merge int list int mergelist int left int mid int right else if i mid else 將列表list按照seglen分...