歸併排序是乙個時間複雜度為o(nlogn)的演算法,對於大量資料遠遠優於氣泡排序與插入排序。
這是一道排序練習題,資料量較大,請使用歸併排序完成。
第一行乙個數字n,代表輸入的組數
其後每組第一行輸入乙個數字m,代表待排序數字的個數
其後m行每行乙個資料,大小在1~100000之間,互不相等,最多有10萬個資料。
公升序輸出排好序的資料,每行乙個數字
1
101098
7654
321
123
4567
8910
具體**如下:
#include #include using namespace std;
void merge(int a,int l1,int r1,int l2,int r2)
while(i<=r1)
temp[index++]=a[i++];
while(j<=r2)
temp[index++]=a[j++];
for(int i=0;ia[l1+i]=temp[i];
}int mergesort(int a,int left,int right)
}int main()
mergesort(a,0,m-1);
for(int j=0;jprintf("%d\n",a[j]);}}
return 0;
}
3105問題 B 基礎排序III 歸併排序
歸併排序是乙個時間複雜度為o nlogn 的演算法,對於大量資料遠遠優於氣泡排序與插入排序。這是一道排序練習題,資料量較大,請使用歸併排序完成。第一行乙個數字n,代表輸入的組數 其後每組第一行輸入乙個數字m,代表待排序數字的個數 其後m行每行乙個資料,大小在1 100000之間,互不相等,最多有10...
問題 B 基礎排序III 歸併排序
題目鏈結 題目描述 歸併排序是乙個時間複雜度為o nlogn 的演算法,對於大量資料遠遠優於氣泡排序與插入排序。這是一道排序練習題,資料量較大,請使用歸併排序完成。輸入 第一行乙個數字n,代表輸入的組數 其後每組第一行輸入乙個數字m,代表待排序數字的個數 其後m行每行乙個資料,大小在1 100000...
基礎排序演算法 歸併排序
歸併排序 merge sort 是建立在歸併操作上的一種有效的排序演算法,該演算法是採用分治法 divide and conquer 的乙個非常典型的應用。將已有序的子串行合併,得到完全有序的序列 即先使每個子串行有序,再使子串行段間有序。若將兩個有序表合併成乙個有序表,稱為二路歸併。歸併排序是一種...