分治之归并排序模版

Posted Jeson

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了分治之归并排序模版相关的知识,希望对你有一定的参考价值。

 1 /*
 2 归并排序模版
 3 对n个数进行排序
 4 时间复杂度:O(nlogn);
 5 利用分治思想,对比左半边和右边边放入一个暂时的数组进行排序
 6  */
 7 #include <iostream>
 8 using namespace std;
 9 const int maxn = 1005;
10 int a[maxn], t[maxn];
11 void merge(int a[], int l, int m, int r)
12 {
13     int i = l, j = m + 1, x = m, y = r, k = 0;
14     while (i <= x && j <= y)
15         if (a[i] < a[j]) t[k++] = a[i++];
16         else t[k++] = a[j++];
17     while (i <= x) t[k++] = a[i++];
18     while (j <= y) t[k++] = a[j++];
19     for (i = 0; i < k; ++i)
20         a[l + i] = t[i];
21 }
22 void merge_sort(int a[], int l, int r)
23 {
24     if (l >= r) return;
25     int mid = (l + r) / 2;
26     merge_sort(a, l, mid);
27     merge_sort(a, mid + 1, r);
28     merge(a, l, mid, r);
29 }
30 void print()
31 {
32     for (int i = 0; i < 5; ++i)
33         cout << a[i] << " ";
34     cout << endl;
35 }
36 int main()
37 {
38     for (int i = 0; i < 5; ++i)
39         a[i] = 5 - i;
40     print();
41     merge_sort(a, 0, 4);
42     print();
43     return 0;
44 }

 

以上是关于分治之归并排序模版的主要内容,如果未能解决你的问题,请参考以下文章

分治(Divide and Conquer)算法之归并排序

排序算法之归并排序

排序算法之归并排序

C++ 不知算法系列之聊聊希尔归并排序算法中的分治哲学

数据结构与算法之排序算法:归并排序

排序算法之归并