zoukankan      html  css  js  c++  java
  • 数据结构-排序-归并排序

                    归并排序

    • 什么事归并排序??就是把几个有序序列合并
    •  先讲简单的2个有序的归并排序
    • 思路很简单,不停的比较两个数组的第一个,谁大就把它插入第三方数组,然后下标++,当某一数组遍历完了,直接把另一个数组剩下的值插入即可。
    • void two_sort(const vector<int>& v1,const vector<int>& v2,vecotr<int>& v3)
      {
          int i=0,j=0,k=0;
          while(i<v1.size()&&j<v2.size())
          {
              if(v1[i]<v2[j])
                 v3.push_back(v1[i++])else
                 v3.push_back(v2[j++]);
          }
       if(i<v1.size())
          {
          while(i<v1.size())
              v3.push_back(v1[i++]);
         }
         else
        {
          while(j<v2.size())
              v3.push_back(v2[j++]);
        }
      }

      理解了这个归并排序那么真正的归并排序也非常简单了。

    • 直接上代码
    • /一次归并排序,两个有序序列分别为v[s]~v[m],v[m+1]~v[t],这里把v1看作两个有序列
      void Merge(vector<int>& v1,int first,int mide,int last,vector<int>& v2)
      {
          int i=first,j=mide+1;
          while(i<=mide&&j<=last)
          {
              if(v1[i]<v1[j])
                 v2.push_back(v1[i++]);
              else
                 v2.push_back(v1[j++]);
          }
              if(i<mide)
          {
          while(i<mide)
              v2.push_back(v1[i++]);
         }
         else
        {
          while(j<last)
              v2.push_back(v1[j++]);
        }
          for(int i=0;i<last;i++)
              v1[i]=v2[i];
      }
      //归并排序递归
      void mergesort(vector<int>&v1, int first, int last, vector<int>&v2)
      {
          if (first < last)           //当first和last相等时候退出循环
          {
              int mid = (first + last) / 2;
              mergesort(v1, first, mid, v2);    //左边有序
              mergesort(v1, mid + 1, last, v2); //右边有序
              Merge(v1, first, mid, last, v2); //再将二个有序数列合并
          }
      }
  • 相关阅读:
    [No0000161]IDEA初步接触
    [No0000171]wpf 类层次结构Class Hierarchy
    [No0000160]常用C# 正则表达式大全
    [No000015D]【李笑来 笔记整理】个人商业模式升级
    thinkphp 系统变量
    thinkphp不读取.env文件的键对值
    thinkphp 模板变量输出替换和赋值
    thinkphp 视图view
    thinkphp 响应对象response
    Thinkphp 请求和响应
  • 原文地址:https://www.cnblogs.com/DJC-BLOG/p/9069844.html
Copyright © 2011-2022 走看看