码迷,mamicode.com
首页 > 编程语言 > 详细

分治之归并排序模版

时间:2017-08-14 12:09:57      阅读:125      评论:0      收藏:0      [点我收藏+]

标签:i++   void   归并   复杂度   color   ++   []   ace   iostream   

 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 }

 

分治之归并排序模版

标签:i++   void   归并   复杂度   color   ++   []   ace   iostream   

原文地址:http://www.cnblogs.com/qq188380780/p/7357036.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!