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

外排序之文件归并排序实现

目录

1. 外排序介绍

2. 文件归并排序思路分析

3. 代码


1. 外排序介绍

外排序(External sorting)是指能够处理极大量数据的排序算法。通常来说,外排序处理的数据不能依次装入内存,只能放在读写较慢的外存储器上(通常是硬盘)。外排序通常采用的是一种"排序 - 归并"的策略。在排序阶段,先读入能放在内存中的数据量,将其排序输出到一个临时文件,依次进行,将待排序数据组织为多个有序的临时文件。然后再归并阶段将这些临时文件组合为一个大的有序文件,也就是排序结果。

跟外排序对应的就是内排序,我们之前的常见的排序都是内排序,他们排序思想适应的是数据在内存中,支持随机访问。归并排序的思想不需要随机访问数据,只需要依次按序列读取数据,所以归并排序既是一个内排序,又是一个外排序。

2. 文件归并排序思路分析

  1.  读取n个值排序后写道file1,再读取n个值排序后写道file2。

  2. file1和file2利用归并排序的思想,依次读取比较,取小的尾插到mfile,mfile归并为一个有序文件。

  3. 将file1和file2删除,mfile重命名为file1。

  4. 再次读取n个数据排序后写道file2。

  5. 继续file1和file2归并,重复步骤2,直到文件中无法读出数据。最后归并出的有序数据放到了file1中。

3. 代码

Elementary data structure: Data structure code and blackboard writing - Gitee.comicon-default.png?t=O83Ahttps://gitee.com/Axurea/elementary-data-structure/tree/master/2024_9_8_Project

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 解锁 macOS 剪贴板历史记录,高效复制、粘贴技巧
  • Maven项目父模块POM中不应包含实际依赖(dependency)
  • 【Clickhouse】Clickhouse数据库简介
  • 如何选择web服务
  • Spring Boot Admin集成与自定义监控告警
  • HOT100(九)多维动态规划
  • EmguCV学习笔记 VB.Net 11.3 DNN其它
  • Ubuntu上安装libdc1394-22-dev出现无法定位安装包的解决办法
  • ④JdbcTemplate与声明式事务
  • UE5学习笔记21-武器的射击功能
  • 【小沐学OpenGL】Ubuntu环境下glew的安装和使用
  • 2.10鼠标事件
  • malloc中的mmap是如何分配内存的
  • Leetcode第414周赛第二题:3281. 范围内整数的最大得分
  • 两种常用损失函数:nn.CrossEntropyLoss 与 nn.TripletMarginLoss
  • [PHP内核探索]PHP中的哈希表
  • android图片蒙层
  • Apache的基本使用
  • ERLANG 网工修炼笔记 ---- UDP
  • ES学习笔记(12)--Symbol
  • IndexedDB
  • Js基础——数据类型之Null和Undefined
  • js数组之filter
  • Mac转Windows的拯救指南
  • MySQL几个简单SQL的优化
  • 大快搜索数据爬虫技术实例安装教学篇
  • 分布式事物理论与实践
  • 基于游标的分页接口实现
  • 树莓派 - 使用须知
  • 提醒我喝水chrome插件开发指南
  • ​secrets --- 生成管理密码的安全随机数​
  • #、%和$符号在OGNL表达式中经常出现
  • #define 用法
  • #nginx配置案例
  • #ubuntu# #git# repository git config --global --add safe.directory
  • #基础#使用Jupyter进行Notebook的转换 .ipynb文件导出为.md文件
  • (02)Hive SQL编译成MapReduce任务的过程
  • (10)STL算法之搜索(二) 二分查找
  • (pytorch进阶之路)CLIP模型 实现图像多模态检索任务
  • (二)PySpark3:SparkSQL编程
  • (附源码)springboot宠物管理系统 毕业设计 121654
  • (附源码)计算机毕业设计SSM基于java的云顶博客系统
  • (每日一问)基础知识:堆与栈的区别
  • (三分钟)速览传统边缘检测算子
  • (一)、python程序--模拟电脑鼠走迷宫
  • (原创)可支持最大高度的NestedScrollView
  • (转)Unity3DUnity3D在android下调试
  • (转)树状数组
  • (总结)Linux下的暴力密码在线破解工具Hydra详解
  • *setTimeout实现text输入在用户停顿时才调用事件!*
  • .Net Core webapi RestFul 统一接口数据返回格式
  • .net core webapi 部署iis_一键部署VS插件:让.NET开发者更幸福
  • .NET Framework 服务实现监控可观测性最佳实践
  • .Net 基于MiniExcel的导入功能接口示例
  • .Net多线程总结