C++归并算法实例

2020-01-06 13:21:42丽君
  • //将La Lb组合成在一起   while (i<n && j<n) 
  • {  if (La[i] < Lb[j]) 
  • {  Lc[k] = La[i]; 
  • k++;  Lc[k] = Lb[j]; 
  • }  else 
  • {  if (La[i] == Lb[j]) 
  • {  Lc[k] = La[i]; 
  • k++;  Lc[k] = Lb[j]; 
  • }  else 
  • {  Lc[k] = Lb[j]; 
  • k++;  Lc[k] = La[i]; 
  • }  } 
  • //各下标往下移动   i++; 
  • j++;  k++; 
  • }   //如果La中的数据没有取完,及La比Lb长,则将La剩下的元素插入Lc中 这里是进行扩展  
  • while (i<=n)  { 
  • Lc[k++] = La[i++];  }  
  • //如果Lb中的数据没有取完,及Lb比La长,则将Lb剩下的元素插入Lc中  while (j<=n) 
  • {  Lc[k++] = Lb[j++]; 
  • }   //对组合好的元素进行排序  
  • MySort(Lc);   } 
  • int main()  { 
  • int a1[n],a2[n], a[(2*n)];  double b1[n], b2[n],b[(2*n)]; 
  • char m1[n], m2[n], m[(2*n)];  //输入数据 归并输出  
  • /*InPut(a1);  InPut(a2);  
  • MergeList(a1,a2,a);  OutPut(a); */ 
  • InPut(m1);  InPut(m2);  
  • MergeList(m1,m2,m);  OutPut(m);  
  • system("pause");  return 0; 
  • }