048.归并排序

简介: 048.归并排序
#include <stdio.h>
#define MAX 255
int R[MAX];
void Merge(int low,int m,int high)
{/* 将两个有序的子文件R[low..m)和R[m+1..high]归并成一个有序的 */
     /* 子文件R[low..high] */
     int i=low,j=m+1,p=0; /* 置初始值 */
     int *R1; /* R1是局部向量,若p定义为此类型指针速度更快 */
     R1=(int *)malloc((high-low+1)*sizeof(int));
     if(!R1) /* 申请空间失败 */
     {
       puts("Insufficient memory available!");
       return;
     }
     while(i<=m&&j<=high) /* 两子文件非空时取其小者输出到R1[p]上 */
       R1[p++]=(R[i]<=R[j])?R[i++]:R[j++];
     while(i<=m) /* 若第1个子文件非空,则复制剩余记录到R1中 */
       R1[p++]=R[i++];
     while(j<=high) /* 若第2个子文件非空,则复制剩余记录到R1中 */
       R1[p++]=R[j++];
     for(p=0,i=low;i<=high;p++,i++)
       R[i]=R1[p];/* 归并完成后将结果复制回R[low..high] */
} /* end of Merge */
void Merge_SortDC(int low,int high)
{/* 用分治法对R[low..high]进行二路归并排序 */
       int mid;
       if(low<high)
       {/* 区间长度大于1 */
          mid=(low+high)/2; /* 分解 */
    Merge_SortDC(low,mid); /* 递归地对R[low..mid]排序 */
    Merge_SortDC(mid+1,high); /* 递归地对R[mid+1..high]排序 */
          Merge(low,mid,high); /* 组合,将两个有序区归并为一个有序区 */
        }
}/* end of Merge_SortDC */
void main()
{
  int i,n;
  clrscr();
  puts("Please input total element number of the sequence:");
  scanf("%d",&n);
  if(n<=0||n>MAX)
  {
    printf("n must more than 0 and less than %d.\n",MAX);
    exit(0);
  }
  puts("Please input the elements one by one:");
  for(i=1;i<=n;i++)
    scanf("%d",&R[i]);
  puts("The sequence you input is:");
  for(i=1;i<=n;i++)
    printf("%4d",R[i]);
  Merge_SortDC(1,n);
  puts("\nThe sequence after merge_sortDC is:");
  for(i=1;i<=n;i++)
    printf("%4d",R[i]);
  puts("\n Press any key to quit...");
  getch();
}
相关文章
|
消息中间件 Linux 数据处理
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用(二)
Linux系统编程 C/C++ 以及Qt 中的零拷贝技术: 从底层原理到高级应用
393 1
|
机器学习/深度学习 人工智能 算法
在进行YOLOv3模型部署时,有哪些常见的硬件平台选择和它们的优缺点是什么?
在进行YOLOv3模型部署时,有哪些常见的硬件平台选择和它们的优缺点是什么?
|
11月前
|
人工智能 移动开发 前端开发
通义灵码使用实践场景、效果和心得。
作为一名H5前端开发学者,我在学习过程中借助通义灵码@workspace大幅提升了效率。通过自动推荐匹配的CSS样式和项目内相似模板的排版建议,减少了重复劳动,效率提高超过一倍。此外,它还能解析并翻译GitHub上的英文.md文件,如成功部署声音合成AI:GPT-SoVITS项目,极大便利了我的学习与开发工作。
355 4
|
8月前
|
人工智能 Serverless API
评测|全网最强🚀!5min部署满血版DeepSeek,零成本,无需编程!
本文介绍了阿里云提供的四种DeepSeek部署方案,包括基于百炼调用满血版API、基于函数计算部署、基于人工智能平台PAI部署和GPU云服务器部署。通过这些方案,用户可以摆脱“服务器繁忙”的困扰,实现快速部署与使用
2267 3
评测|全网最强🚀!5min部署满血版DeepSeek,零成本,无需编程!
|
开发者 UED Ruby
Ruby中的异常处理之谜:如何用异常与rescue让你的代码坚不可摧?
【8月更文挑战第31天】在软件开发中,错误处理对应用稳定性至关重要。作为动态、面向对象的语言,Ruby提供了丰富的错误处理机制,如异常与rescue。本文通过示例代码介绍了Ruby中的异常类型、异常链及rescue与else的使用,展示了如何优雅地处理各种错误情况,增强了程序的健壮性和用户体验。使用这些机制,开发者能更精准地识别并解决运行时问题,提升应用质量。随着Ruby生态的发展,错误处理的重要性将愈发凸显。
197 1
|
7月前
|
运维 安全 网络安全
企业级通配符 SSL 证书:企业网络安全的坚实护盾
企业级通配符SSL证书是企业的网络“身份证”,一个证书即可保护主域名及所有子域名,简化管理流程。它采用先进加密算法,确保数据传输安全,防止黑客攻击。拥有此证书可提升网站信任度,增强品牌形象,吸引更多客户。同时,它灵活适配业务变化,降低成本,为企业数字化发展提供有力支持。
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
MybatisPlus3---常用注解,驼峰转下滑线作为表明 cteateTime 数据表中的 cteate_time,@TableField,与数据库字段冲突要使用转义字符“`order`“,is
|
机器学习/深度学习 存储 算法
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
329 1
|
前端开发 JavaScript 开发者
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
React craco 详细使用与介绍(类似 Vue 外抛的 vue.config.js)
2565 0
|
机器学习/深度学习 传感器 算法
【数字调制识别分类】基于 PSK+QPSK+8QAM+16QAM+32QAM+64QAM实现加性高斯白噪声信道下数字调制识别分类附Matlab源码
【数字调制识别分类】基于 PSK+QPSK+8QAM+16QAM+32QAM+64QAM实现加性高斯白噪声信道下数字调制识别分类附Matlab源码