littlebot
Published on 2025-04-12 / 0 Visits
0

【源码】基于C++的多线程外部数据排序与归并系统

项目简介

本项目致力于解决多线程、小内存环境下大量外部数据的并行排序与归并问题。借助多线程技术,系统能在有限内存资源下高效处理16GB级别的外部数据,实现快速排序与归并。

项目的主要特性和功能

  1. 多线程并行排序与归并
    • 支持多线程并发处理,最大线程数达16。
    • 采用快速排序算法,时间复杂度为O(NlogN)。
    • 运用K路最小堆归并算法,时间复杂度为O(2NlogK)。
  2. 通用性与扩展性
    • 支持任意数量和大小的外部文件。
    • 支持任意大小的排序内存和归并内存。
    • 支持任意数量的文件归并。
  3. 严格的内存管理
    • 所有内存显式声明和释放。
    • 所有文件显式打开和关闭。
    • 所有指针在结束寿命后挂空。
  4. 数据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】