当前位置: 首页 > article >正文

6.3 归并排序Mergesort

归并排序应用数据分组的方法,将输入数据分成元素数量相同的多个分组,然后两两归并,组织成树形序,最后得到一个有序文件。归并排序早期用在内存有限时,存储器的数据只能部分调入内存,只能分组排序。归并排序是两个有序表的归并,再组成一个有序表。因此,归并排序实现了局部有序。

例题是清华大学版《数据结构》,10.5 归并排序。

源程序

   C语言伪代码

void Merge(RcdType SR[], RcdType TR[], int i, int m, int n){

        /*2路归并有序的SR[i..m]与SR[m+1..n],实现有序的目标文件TR[i..n]*/

for(j=m+1,k=i;  i<=m&&j<=n;  ++k){

     if(LQ(SR[i].key,SR[j].key)  TR[k]=SR[i++];

         /*LQ(a,b)=(a<=b)*/

        /*SR[i]比SR[j]小,应存放到TR[k]中,i移动到下一元素*/

else

       TR[k]=SR[j++];

      /*否则,SR[j]比SR[i]小,应存放到TR[k]中,j移动到下一元素*/

    }

    if (i<=m)  TR[k..n]=SR[i..m];

 /*SR[m+1..n]全部比较完成,存放到TR[]中,因此SR[i..m]应顺序存放到TR[]*/

    if (j<=n)  TR


http://www.kler.cn/a/3519.html

相关文章:

  • 一文大白话讲清楚webpack基本使用——11——chunkIds和runtimeChunk
  • U3D的.Net学习
  • 电梯系统的UML文档07
  • manim(manimgl)安装教学-win11(2024-08)
  • Observability:最大化可观察性 AI 助手体验的 5 大提示(prompts)
  • 什么是报文的大端和小端,有没有什么记忆口诀?
  • 【深度强化学习】(3) Policy Gradients 模型解析,附Pytorch完整代码
  • 51单片机8*8 LED点阵实现原理讲解
  • echarts地图不同地区设置不同的颜色
  • 手机验证发送及其验证(基于springboot+redis)保姆级
  • Docker【基本使用】
  • 你还不会递归?告别困惑,我来教你
  • 多线程(三):Thread 类的基本属性
  • USB键盘实现——字符串描述符(四)
  • JNI原理及常用方法概述
  • 【软件测试】基础知识第一篇
  • 使用chatGPT实现数字自增动画
  • 数字信号处理_QA_2023_超长
  • [渗透教程]-004-嗅探工具-Nmap
  • STM32开发基础知识入门
  • MongoDB 6.0 入门(二)
  • javaEE初阶 — 博客系统的页面设计
  • 4年功能测试,我一进阶python接口自动化测试,跳槽拿了20k......
  • 第二章 作业(6789B)【编译原理】
  • python迭代器详解
  • 2023最新ChatGPT整理的40道Java高级面试题