ye1031

思想:运用分治法思想解决排序问题。

void Merge(int A[],int low,int mid,int high)      
 {      
     int i,j,k;    
     int *P = new int[mid-low+1],*Q = new int[high-mid];      
     
     for (i =0;i  < mid - low +1;++i)   P[i] = A[i+low];
          
     for (i = 0; i  < high - mid;++i)   Q[i] = A[mid+1+i];      
      
     i = j = 0,k = low;      
     while ((i  <= mid-low) && (j  <= high-mid-1))      
     {      
      
         if (P[i]  <= Q[j])   A[k++] = P[i++];      
         else  A[k++]= Q[j++];      
     }      
      
     if (i > mid - low)   { for (;j  <= high-mid-1;++j)   A[k++] = Q[j]; }      
     else     
     {   for (; i <= mid - low;++i)   A[k++] = P[i];  }      
      
     delete [] P;      
     delete [] Q;      
 }      
      
 void mergeSort(int A[],int left,int right)      
 {      
     if (left  < right)      
     {      
         int i = (left + right) / 2;      
         MergeSort(A,left,i);      
         MergeSort(A,i+1,right);      
         Merge(A,left,i,right);      
     }      
 }      

  

分类:

技术点:

相关文章:

  • 2022-01-13
  • 2021-12-11
  • 2022-01-14
  • 2022-01-06
  • 2021-08-21
  • 2022-01-22
  • 2021-12-02
猜你喜欢
  • 2021-11-28
  • 2022-01-03
  • 2019-08-01
  • 2022-02-08
  • 2022-02-03
  • 2021-12-14
  • 2021-12-14
相关资源
相似解决方案