演算法分析實驗之合併排序

2022-08-23 03:48:06 字數 895 閱讀 7530

題目描述

這是乙個很簡單的排序題目. 為了鍛鍊大家對不同演算法的了解,請大家用歸併排序法對此題進行解答. 對一組整數數列a[1],a[2],a[3]......a[n]進行排序,按照從小到大的順序輸出.

輸入

本題只有一組測試資料,在輸入的第一行輸入n(表示整數數列的大小)(n < 1000)

接下來n行輸入n個整數,每一行乙個整數.

輸出
對已經排好序的數從小到大依次輸出,每兩個數之間用兩個空格隔開,且每輸出10個數換行.
樣例輸入複製

12

45545

4847

4445

4857

5857

4851255

42

樣例輸出複製

42 44 45 45 47 48 57 58 485 545

1255 4857

#include#include

using

namespace

std;

intn;

void merge(int a,int temp,int start,int mid,int

end)

while(i!=mid+1

) temp[k++]=a[i++];

while(j!=end+1

) temp[k++]=a[j++];

for(i=start; i<=end; i++)

a[i] =temp[i];

}void mergesort(int a,int temp,int start,int

end)

}int

main()

}return0;

}

演算法分析 合併排序演算法

1.設定三個指標i,j,k 其中i和j指示兩個待排序序列中當前需比較的元素,k指向輔助陣列b中待放置元素的位置。2.比較a i 和a j 的大小關係,小的取出來,如果a i 小於等於a j 則b k a i 同時將指標i和k分別推進一步 反之,b k a j 同時將指標j和k分別推進一步 如此反覆,...

演算法之合併排序

合併排序演算法是用分治策略實現對n個元素進行排序的演算法。基本思想 將待排序元素分成大小大致相同的兩個子集合,分別對兩個子集合進行排序,最終將排好序的子集合合併成要求的排好序的集合。歸併操作的工作原理如下 第一步 申請空間,使其大小為兩個已經 排序序列之和,該空間用來存放合併後的序列 第二步 設定兩...

演算法之合併排序

分治法,將原問題劃分成n個規模較小而結構與原問題相似的子問題 遞迴地解決這些子問題,然後再合併其結果,就能得到原問題的解。在每一層遞迴上都會有三個步驟 分解 將原問題分解成一系列子問題 解決 遞迴地解決各子問題,若子問題足夠小,則直接求解 合併 將子問題的結果合併成原問題的解。合併排序演算法完全依照...