项目简介
本项目致力于解决多线程、小内存环境下大量外部数据的并行排序与归并问题。借助多线程技术,系统能在有限内存资源下高效处理16GB级别的外部数据,实现快速排序与归并。
项目的主要特性和功能
- 多线程并行排序与归并
- 支持多线程并发处理,最大线程数达16。
- 采用快速排序算法,时间复杂度为O(NlogN)。
- 运用K路最小堆归并算法,时间复杂度为O(2NlogK)。
- 通用性与扩展性
- 支持任意数量和大小的外部文件。
- 支持任意大小的排序内存和归并内存。
- 支持任意数量的文件归并。
- 严格的内存管理
- 所有内存显式声明和释放。
- 所有文件显式打开和关闭。
- 所有指针在结束寿命后挂空。
- 数据IO操作
- 生成未排序的随机数据并存储到磁盘。
- 单线程排序并将结果写入新文件。
- 读取未排序文件到内存并进行排序。
- 将排序后的数据写入文件。
安装使用步骤
环境准备
- 操作系统:Ubuntu 22.04.3
- 编译器:g++ 11.4.0, gcc 11.4.0
编译项目
bash
cd ./Multi_Thread_External_Sort_v3.0
g++ -o MultiThreadExtSortTest DataIO.h NumberControler.h ThreadPool.h KShotMergeMinHeap.h DataIO.cpp KShotMergeMinHeap.cpp MultiThreadExtSortTester.cpp
运行项目
bash
./MultiThreadExtSortTest
结果验证
- 程序运行结束后,会生成排序后的文件和归并后的文件。
- 可以通过抽样输出的方式验证排序和归并结果的正确性。
下载地址
点击下载 【提取码: 4003】【解压密码: www.makuang.net】