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); //再将二个有序数列合并
          }
      }
  • 相关阅读:
    汇编自学链接
    数据库 —— Access 数据库
    OpenGL —— 基础笔记
    VMWare复制虚拟机系统后,模块“Disk”无法启动【转】
    DM设备的创建与管理
    RAID磁盘分区的创建
    文件的压缩、解压缩和打包命令
    磁盘及文件系统管理
    Shell编程中的条件判断(条件测试)
    Linux中vim编辑器的缩进的功能键
  • 原文地址:https://www.cnblogs.com/DJC-BLOG/p/9069844.html
Copyright © 2011-2022 走看看