归并排序法实现
  TEZNKK3IfmPf 2023年11月15日 59 0


/*
     归并排序实现
    coder:QPZ
        time:2014-12-03
*/
#include <time.h>
#include <stdlib.h>
#include <iostream>
using namespace std;
class Mergesort{
       private:
              int *Arr;
              int n;
   public:
           Mergesort(int n){
                  this->n=n;
                  srand((unsigned)time(NULL));
                  Arr=(int*)malloc(n*sizeof(int));
                  for(inti=0;i < n;i++){
                         Arr[i]=rand()%100;
                  }/*endfor*/
           }
     void    Msort(int left,int right);
     void Merge(int left,int right,int rigntEnd);
           void PrinArr();
           ~Mergesort(){
                  free(Arr);
                     }
};
int main(void)
{
       intn;
       cin>>n;
       classMergesort *p=new Mergesort(n);
       p->PrinArr();
       p->Msort(0,n-1);
       p->PrinArr();
       return0;
}
void Mergesort::PrinArr()
{
       for(inti=0;i<n;i++){
              cout<<Arr[i]<<" ";
       }/*endfor*/
       cout<<endl;
}
void Mergesort::Msort(int left,int right){
       intmiddle;
       if(left<right){
              middle=(left+right)/2;
              //分割数集
              Msort(left,middle);
              Msort(middle+1,right);
              //归并操作
              Merge(left,middle+1,right);
       }
}
void Mergesort::Merge(int left,int right,intrightEnd)
{    
       int*TmpArry=(int *)malloc((rightEnd-left+1)*sizeof(int));
       inttmp;
       inti;
       intLeft=left;
       intRight=right;
       /*比大小赋值,结束后接*/
       for(tmp=0;Left<right&& Right<=rightEnd;) {
              if(Arr[Left]<=Arr[Right]){
                     TmpArry[tmp++]=Arr[Left++];
              } else{
                     TmpArry[tmp++]=Arr[Right++];
              }/*end if else*/
       }/*endfor*/
       while(Left<right){
       TmpArry[tmp++]=Arr[Left++];          
       }
       while(Right<rightEnd){
              TmpArry[tmp++]=Arr[Right++];
       }
       /*Tmp赋值返回*/
       for(i=0,Left=left;i< tmp;i++){
              Arr[Left++]=TmpArry[i];
       }/*end for*/
       free(TmpArry);
}



【版权声明】本文内容来自摩杜云社区用户原创、第三方投稿、转载,内容版权归原作者所有。本网站的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@moduyun.com

  1. 分享:
最后一次编辑于 2023年11月15日 0

暂无评论

推荐阅读
  TEZNKK3IfmPf   2023年11月15日   19   0   0 递归i++
  TEZNKK3IfmPf   2024年03月29日   50   0   0 i++
  TEZNKK3IfmPf   2023年11月15日   31   0   0 idei++
  TEZNKK3IfmPf   2023年11月15日   19   0   0 初始化i++
  TEZNKK3IfmPf   2023年11月15日   20   0   0 搜索i++
  TEZNKK3IfmPf   2024年03月29日   117   0   0 i++排序
TEZNKK3IfmPf