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

    void merge(int *A,int p,int q,int r){//归并排序 合并数组部分
     int *temp1 = new int[q-p+1];
     int *temp2 = new int[r-q+1];
     for(int i = 0;i<q-p+1;i++){temp1[i] = A[p+i];}
     for(int j = 0;j<r-q;j++){temp2[j] = A[q+j+1];}
     int flag1 = 0;
     int flag2 = 0;
     for(int m = 0;m<r-p+1;m++){
      if(flag1 == q-p+1&&flag2 == r-q){
       return;
      }
      if(flag1<q-p+1&&flag2 == r-q){
       A[m+p] = temp1[flag1];
       flag1++;
      }else if(flag1 == q-p+1&&flag2<r-q){
       A[m+p] = temp2[flag2];
       flag2++;
      }else if(flag1<q-p+1&&flag2<r-q){
       if(temp1[flag1]>temp2[flag2]){
        A[m+p] = temp2[flag2];
        flag2++;
       }else if(temp1[flag1]<=temp2[flag2]){
        A[m+p] = temp1[flag1];
        flag1++;
       }
      }
     }

     delete []temp1;
     delete []temp2;
    }
    void merge_sort(int *A,int p,int r){//归并迭代
     if(p<r){
      int q = (p+r)/2;
      merge_sort(A,p,q);
      merge_sort(A,q+1,r);
      merge(A,p,q,r);
     }
    }

  • 相关阅读:
    Parcel与Parcelable剖析
    Binder文集
    Charles 使用教程
    AsyncTask
    Android 编译时注解
    scanf(),gets(),getchar()
    银行家算法
    最长公共子序列(LCS)问题
    动态规划 求解数字三角形最大值
    参数 存在二维数组
  • 原文地址:https://www.cnblogs.com/candycloud/p/3385359.html
Copyright © 2011-2022 走看看