中文字幕在线观看,亚洲а∨天堂久久精品9966,亚洲成a人片在线观看你懂的,亚洲av成人片无码网站,亚洲国产精品无码久久久五月天

合并排序(遞歸調用)

2018-07-20    來源:open-open

容器云強勢上線!快速搭建集群,上萬Linux鏡像隨意使用

#include <iomanip.h>//調用setw

#include <iostream.h>  //將b[0]至b[right-left+1]拷貝到a[left]至a[right]

template <class T> 

void Copy(T a[],T b[],int left,int right)

{  int size=right-left+1;

   for(int i=0;i<size;i++)

   {  

   a[left++]=b[i];

   }

}  //合并有序數(shù)組a[left:i],a[i+1:right]到b,得到新的有序數(shù)組b

template <class T> 

void Merge(T a[],T b[],int left,int i,int right)

{  int a1cout=left,//指向第一個數(shù)組開頭  

   a1end=i,//指向第一個數(shù)組結尾  

   a2cout=i+1,//指向第二個數(shù)組開頭  

   a2end=right,//指向第二個數(shù)組結尾  

   bcout=0;//指向b中的元素    

for(int j=0;j<right-left+1;j++)//執(zhí)行right-left+1次循環(huán)

{  if(a1cout>a1end)

 {   b[bcout++]=a[a2cout++]; 

     continue; }  //如果第一個數(shù)組結束,拷貝第二個數(shù)組的元素到b

  if(a2cout>a2end) 

 {

    b[bcout++]=a[a1cout++];

    continue; }  //如果第二個數(shù)組結束,拷貝第一個數(shù)組的元素到b

if(a[a1cout]<a[a2cout])

{  b[bcout++]=a[a1cout++];

   continue; }  //如果兩個數(shù)組都沒結束,比較元素大小,把較小的放入b

 else 

 {  b[bcout++]=a[a2cout++];

    continue;} } }  //對數(shù)組a[left:right]進行合并排序

template <class T> 

void MergeSort(T a[],int left,int right)

 {  T *b=new

    int[right-left+1];

  if(left<right)

{ 

  int i=(left+right)/2;//取中點 

  MergeSort(a,left,i);//左半邊進行合并排序

  MergeSort(a,i+1,right);//右半邊進行合并排序

  Merge(a,b,left,i,right);//左右合并到b中

  Copy(a,b,left,right);//從b拷貝回來

 }

} 

 int main()

 { int n; 

  cout<<"請輸入您將要排序的數(shù)目:"; cin>>n; 

 int *a=new int[n];  cout<<"請輸入相應的數(shù)字:";

 for(int i=0;i<n;i++)

 {  cin>>a[i]; } 

 MergeSort( a, 0, n-1); cout<<"排序結果:";

 for(int j=0;j<n;j++)

 {  cout<<setw(5)<<a[j];  } 

    cout<<endl;

    return 1;

 } 

標簽:

版權申明:本站文章部分自網(wǎng)絡,如有侵權,請聯(lián)系:west999com@outlook.com
特別注意:本站所有轉載文章言論不代表本站觀點!
本站所提供的圖片等素材,版權歸原作者所有,如需使用,請與原作者聯(lián)系。

上一篇: Android保持屏幕常亮

下一篇:Java給定公歷日期計算相應農歷/陰歷日期