zoukankan      html  css  js  c++  java
  • 合并排序

    复杂度
    最坏时间复杂度
     
    最好时间复杂度
     
    空间复杂度
     
     1 #include<iostream>
     2 #include<vector>
     3 using namespace std;
     4 void merge1(int a[], int p, int m, int q)
     5 {
     6     int c = m - p + 1;
     7     int b = q - m;
     8     //int L[c + 1], R[b + 1];
     9     //int *L = new int[c + 1];
    10     //int *R = new int[b + 1];
    11     vector<int> L(c + 1);
    12     vector<int> R(b + 1);
    13     for (int i = 0; i < c; i++)
    14     {
    15         L[i] = a[p + i];
    16     }
    17     for (int i = 0; i < b; i++)
    18     {
    19         R[i] = a[m + i + 1];
    20     }
    21     L[c] = INT_MAX;
    22     R[b] = INT_MAX;
    23     int i ,j;
    24     i = j = 0;
    25     for (int k = p; k <= q; k++)
    26     {
    27         if (L[i] < R[j])
    28         {
    29             a[k] = L[i];
    30             i++;
    31         }
    32         else
    33         if (L[i] >= R[j])
    34         {
    35             a[k] = R[j];
    36             j++;
    37         }
    38     }
    39 }
    40 void recursive_mergesort(int a[], int p, int q)
    41 {
    42     if (p < q)
    43     {
    44         int m = (q + p) / 2;
    45         recursive_mergesort(a, p, m);
    46         recursive_mergesort(a, m + 1, q);
    47         merge1(a, p, m, q);
    48     }
    49 }
    50 int main()
    51 {
    52     int a[] = { 1, 5, 6, 88, 8, 99, 88, 0, 1 };
    53     for (auto s : a)
    54         cout << s << " ";
    55     cout << endl;
    56     recursive_mergesort(a, 0, 8);
    57     for (auto s : a)
    58         cout << s << " ";
    59     system("pause");
    60     return 0;
    61 }
  • 相关阅读:
    Blender基础操作
    反汇编及linux下edb的下载
    混淆矩阵(confusion_matrix)含义
    Python大数据第三次的作业
    Python的DataFrame基础使用
    Python数据标准化
    爬虫之xpath
    luffy项目上线
    爬虫之selenium
    celery
  • 原文地址:https://www.cnblogs.com/wujufengyun/p/6902093.html
Copyright © 2011-2022 走看看