这是用分治法来对序列进行排序,将较长的一个序列分解为n个比较短的序列,然后分别处理这n个较小的段序列,最后合并。使用递归的来实现。

具体实现的代码如下:

 void  MergeSort(int *A, int p, int r)
{
if(p < r)
{
int q = ( p + r ) / ;
MergeSort(A, p, q);
MergeSort(A, q + , r);
Merge(A, p, q, r);
}
}
void Merge(int *A, int p, int q, int r)
{
int n1 = q - p + ;
int n2 = r - q ;
int *L1 = new int[ (n1 + ) * sizeof(int)];
int *R1 = new int[ (n2 + ) * sizeof(int)];
int iLoop;
int jLoop; for(iLoop = ; iLoop != n1; ++iLoop)
{
L1[iLoop] = A[p + iLoop];
}
for( jLoop = ; jLoop != n2; ++jLoop)
{
R1[jLoop] = A[q + jLoop + ];
}
L1[n1 ] = INT_MAX;
R1[n2 ] = INT_MAX; jLoop = ;
iLoop = ;
for (int kLoop = p; kLoop != r + ; ++kLoop)
{
if(L1[iLoop] <= R1[jLoop])
{
A[kLoop] = L1[iLoop++];
}
else
{
A[kLoop] = R1[jLoop++];
}
}
  delete L1;
    delete R1;
}

算法还需要深入思考,to be continued

最新文章

  1. C#程序员经常用到的10个实用代码片段
  2. L2TP协议
  3. Scala笔记整理
  4. 【BZOJ-3910】火车 倍增LCA + 并查集
  5. SOA 架构中的ESB是更好的应用于异构系统集成整合还是用于统一服务调用/基础服务实施
  6. NDK-gdb
  7. python3中输出不换行
  8. javaBean为什么要实现Serializable接口?
  9. bzoj3998 [TJOI2015]弦论(SAM)
  10. STM32库中 __IO 修饰符(volatile修饰符)
  11. Objective-c 数据类型
  12. [Mark] KVM 虚拟化基本原理
  13. kafka 0.10.2 消息消费者
  14. a链接易混淆与form表单简易验证用法详解
  15. [代码应用]javaSE程序递归删除文件夹下的.bak文件程序源代码
  16. python 函数返回值(总结)
  17. 第三章 Models详解
  18. Drupal使用
  19. python---基础知识回顾(三)(面向对象)
  20. Redis性能测试Redis-benchmark

热门文章

  1. R6的压力测试
  2. 【题解】APIO2007动物园
  3. Android 异步通信:图文详解Handler机制工作原理
  4. at用法小记
  5. Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) A
  6. Codeforces Round #348 (VK Cup 2016 Round 2, Div. 2 Edition) B
  7. 使用记事本创建Web服务(WebService)
  8. idea初学建立maven项目报错
  9. ext4文件系统由文件的inode号定位其inode Table
  10. iebackground+icon图标兼容