zoukankan      html  css  js  c++  java
  • 分治之归并排序模版

     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 }
  • 相关阅读:
    Nightmare Ⅱ HDU
    Full Tank? POJ
    2601 电路维修 (双端队列bfs优先队列bfs(最短路))
    Sudoku POJ
    Pushing Boxes POJ
    2501 矩阵距离 (bfs)
    【排序】绝境求生
    【排序】逆序对IV
    【排序】紧急集合
    【排序】常用排序法
  • 原文地址:https://www.cnblogs.com/qq188380780/p/7357036.html
Copyright © 2011-2022 走看看