C++归并算法实例

2020-01-06 13:21:42丽君

易采站长站为您分析C++归并算法,实例分析了C++实现基于归并算法合并线性表的相关技巧,具有一定参考借鉴价值,需要的朋友可以参考下

本文实例讲述了C++归并算法。。具体如下:

 

 
  1. /*   归并算法:把两个或两个以上的线性表合并在一起,形成一个新的线性表 
  2. 函数模版的基本使用  程序意图:将两个相同类型的线性表元素排好序,然后将他们组合成一个排好的线性表  
  3. */  #include <iostream> 
  4. using namespace std;  const int n = 5; //5个元素  
  5. //输出数据元素  template <class T1> 
  6. void OutPut(T1 out[(2*n)])  {  
  7. for (int i=0; i<(2*n); i++)  {  
  8. cout<<out[i]<<" ";  } 
  9. cout<<endl;  }  
  10. //输入数据元素   template <class T2> 
  11. void InPut(T2 in[n])  { 
  12. cout<<"请输入5个数据元素:";  for (int i=0; i<n; i++) 
  13. {   cin>>in[i]; 
  14. cout<<" ";   } 
  15. cout<<endl;  } 
  16. //模版函数 输入线性表元素并将其排序  template <class T3>  
  17. void MySort(T3 a[2*n])  { 
  18. int temp; //交换数据临时变量   //冒泡锚序  
  19. for (int i=0; i<2*n-1; i++)  { 
  20. for (int j=0; j<2*n-1-i; j++)  { 
  21. if (a[j]>a[j+1])   { 
  22. temp = a[j];  a[j] = a[j+1]; 
  23. a[j+1] = temp;   } 
  24. }  } 
  25. }  //模版函数 归并  
  26. template <class T>   void MergeList(T La[n], T Lb[n], T Lc[(2*n)])  
  27. {  int i = 0; //作为La的下标  
  28. int j = 0; //Lb下标  int k = 0; //Lc下标