国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C++ > 正文

C++歸并算法實例

2020-05-23 14:18:20
字體:
來源:轉載
供稿:網友

這篇文章主要介紹了C++歸并算法,實例分析了C++實現基于歸并算法合并線性表的相關技巧,具有一定參考借鑒價值,需要的朋友可以參考下

本文實例講述了C++歸并算法。分享給大家供大家參考。具體如下:

 

 
  1. /*  
  2. 歸并算法:把兩個或兩個以上的線性表合并在一起,形成一個新的線性表 
  3. 函數模版的基本使用 
  4. 程序意圖:將兩個相同類型的線性表元素排好序,然后將他們組合成一個排好的線性表  
  5. */ 
  6. #include <iostream> 
  7. using namespace std; 
  8. const int n = 5; //5個元素  
  9. //輸出數據元素 
  10. template <class T1> 
  11. void OutPut(T1 out[(2*n)]) 
  12. {  
  13. for (int i=0; i<(2*n); i++) 
  14. {  
  15. cout<<out[i]<<" "
  16. cout<<endl; 
  17. }  
  18. //輸入數據元素  
  19. template <class T2> 
  20. void InPut(T2 in[n]) 
  21. cout<<"請輸入5個數據元素:"
  22. for (int i=0; i<n; i++) 
  23. {  
  24. cin>>in[i]; 
  25. cout<<" ";  
  26. cout<<endl; 
  27. //模版函數 輸入線性表元素并將其排序 
  28. template <class T3>  
  29. void MySort(T3 a[2*n]) 
  30. int temp; //交換數據臨時變量  
  31. //冒泡錨序  
  32. for (int i=0; i<2*n-1; i++) 
  33. for (int j=0; j<2*n-1-i; j++) 
  34. if (a[j]>a[j+1])  
  35. temp = a[j]; 
  36. a[j] = a[j+1]; 
  37. a[j+1] = temp;  
  38. //模版函數 歸并  
  39. template <class T>  
  40. void MergeList(T La[n], T Lb[n], T Lc[(2*n)])  
  41. int i = 0; //作為La的下標  
  42. int j = 0; //Lb下標 
  43. int k = 0; //Lc下標  
  44. //將La Lb組合成在一起  
  45. while (i<n && j<n) 
  46. if (La[i] < Lb[j]) 
  47. Lc[k] = La[i]; 
  48. k++; 
  49. Lc[k] = Lb[j]; 
  50. else 
  51. if (La[i] == Lb[j]) 
  52. Lc[k] = La[i]; 
  53. k++; 
  54. Lc[k] = Lb[j]; 
  55. else 
  56. Lc[k] = Lb[j]; 
  57. k++; 
  58. Lc[k] = La[i]; 
  59. //各下標往下移動  
  60. i++; 
  61. j++; 
  62. k++; 
  63. }  
  64. //如果La中的數據沒有取完,及La比Lb長,則將La剩下的元素插入Lc中 這里是進行擴展  
  65. while (i<=n) 
  66. Lc[k++] = La[i++]; 
  67. }  
  68. //如果Lb中的數據沒有取完,及Lb比La長,則將Lb剩下的元素插入Lc中 
  69. while (j<=n) 
  70. Lc[k++] = Lb[j++]; 
  71. }  
  72. //對組合好的元素進行排序  
  73. MySort(Lc);  
  74. int main() 
  75. int a1[n],a2[n], a[(2*n)]; 
  76. double b1[n], b2[n],b[(2*n)]; 
  77. char m1[n], m2[n], m[(2*n)]; 
  78. //輸入數據 歸并輸出  
  79. /*InPut(a1); 
  80. InPut(a2);  
  81. MergeList(a1,a2,a); 
  82. OutPut(a); */ 
  83. InPut(m1); 
  84. InPut(m2);  
  85. MergeList(m1,m2,m); 
  86. OutPut(m);  
  87. system("pause"); 
  88. return 0; 
  89. }  

希望本文所述對大家的C++程序設計有所幫助。

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 南昌市| 新郑市| 余庆县| 东乌珠穆沁旗| 东宁县| 金塔县| 丹东市| 福鼎市| 德江县| 宁安市| 兴文县| 柳州市| 乃东县| 民和| 云霄县| 合肥市| 禄丰县| 珠海市| 新野县| 佛学| 禹城市| 阿城市| 许昌市| 电白县| 盐边县| 建水县| 新竹市| 南木林县| 怀仁县| 汉沽区| 吴忠市| 孙吴县| 东平县| 正蓝旗| 青铜峡市| 克拉玛依市| 开鲁县| 多伦县| 台湾省| 钟山县| 云安县|