zoukankan      html  css  js  c++  java
  • 归并排序(c++,递归)

    放上c++代码模板(但是该版本中,还可以再进一步优化成原地算法,即不开辟新的空间;本代码中空间复杂度为n,不是1)

     1 #include <iostream>
     2 #include<vector>
     3 using namespace std;
     4 
     5 void merge_func(vector<int> &v, int l, int m, int r)
     6 {
     7     vector<int> t;
     8     int p=l, q=m+1;
     9     while(p<=m && q<=r)
    10     {
    11         if(v[p]>v[q])
    12         {
    13             t.push_back(v[q]);
    14             q++;
    15         }
    16         else
    17         {
    18             t.push_back(v[p]);
    19             p++;
    20         }
    21     }
    22     while(p<=m)
    23         t.push_back(v[p++]);
    24     while(q<=r)
    25         t.push_back(v[q++]);
    26 
    27     for(int i=l;i<=r;i++)
    28         v[i] = t[i-l];
    29 
    30 }
    31 
    32 void merge_sort(vector<int> &v, int l, int r)
    33 {
    34     if(l<r)
    35     {
    36         int m = l+(r-l)/2;   //先找到中点位置
    37         merge_sort(v,l,m);   //左侧归并排序
    38         merge_sort(v,m+1,r);  //右侧归并排序
    39         merge_func(v,l,m,r);  //合并左侧和右侧
    40     }
    41 }
    42 
    43 int main()
    44 {
    45     vector<int> v={6,4,2,3,1,5};
    46     //vector<int> v={3,6,1,2,4,7,5};
    47     merge_sort(v,0,v.size()-1);
    48     for(auto i:v)
    49         cout<<i<<endl;
    50     return 0;
    51 }
  • 相关阅读:
    分析内存泄露问题
    Android 官方博客
    python 2.*和3.*的变化
    python __init__.py
    关于python的import
    Android----Gradle
    Python---string
    uwsgi01---uwsgi文件
    Nginx02---指令集实现静态文件服务器
    python依赖文件的生成requirement.txt
  • 原文地址:https://www.cnblogs.com/qiezi-online/p/13253847.html
Copyright © 2011-2022 走看看