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

    合并两个有序数组并排序:
    int *combination(int *a,int n1,int *b,int n2){
      int *c=new int[n1+n2];
      int i=0;
      int j=0;
      int count=0;
      while((i<n1)&&(j<n2)){
        if(a[i]<b[j]){
        c[count++]=a[i++];

        }

        else{
          c[count++]=b[j++];
        }
      }
      if(count<n1+n2-1){
        while(i<n1){
          c[count++]=a[i++];
        }
        while(j<n2){
          c[count++]=b[j++];
        }
      }
      return c;
    }

    合并一个数组内的两个分别有序部分,无返回。

    void merge(int *a,int i,int j,int k){
      int *c=new int[k-i+1];
      int p=i;
      int q=j+1;
      int count=0;
      while((p<=j)&&(q<=k)){
        if(a[p]<a[q]){
          c[count++]=a[p++];
        }
        else{
          c[count++]=a[q++];
        }
      }
      if(count<k-i+1){
        while(p<=j){
          c[count++]=a[p++];
        }
        while(q<=k){
          c[count++]=a[q++];
        }
      }
      int m=0;
      while(m<k-i+1){
        a[i+m]=c[m];
        ++m;
      }
    }

    归并排序:二分法,分别对两边排序,再合并。

    void merge_sort(int *a,int start,int end){
      if(end!=start){
        int middle=(start+end)/2;
        merge_sort(a,start,middle);
        merge_sort(a,middle+1,end);
        merge(a,start,middle,end);
      }

      else{
        return;
      }
    }

  • 相关阅读:
    Vue项目中跨域问题解决
    子网掩码
    C++的const类成员函数
    在python3中使用urllib.request编写简单的网络爬虫
    Linux 重定向输出到多个文件中
    背包问题
    hdu-1272 小希的迷宫
    SQLAlchemy 几种查询方式总结
    pycharm快捷键、常用设置、配置管理
    python3判断字典、列表、元组为空以及字典是否存在某个key的方法
  • 原文地址:https://www.cnblogs.com/huangshan/p/3386695.html
Copyright © 2011-2022 走看看