# alg_sort **Repository Path**: accessskg/alg_sort ## Basic Information - **Project Name**: alg_sort - **Description**: 排序算法,包含基础版、大数版、多线程版3种版本,每个版本均支持选择排序、归并排序、快速排序、希尔排序、基数排序。其中,大数版最多支持100位数字,多线程版最多1亿数据规模。 - **Primary Language**: Unknown - **License**: Apache-2.0 - **Default Branch**: main - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2022-10-26 - **Last Updated**: 2022-11-21 ## Categories & Tags **Categories**: Uncategorized **Tags**: 排序算法, 大数排序, 多线程排序 ## README # 概述 ### 项目介绍 本项目是《程序设计与算法》大作业。具体内容为: 1. 实现选择排序、归并排序、快速排序、希尔排序、基数排序; 2. 使用上述算法对[-10^100, 10^100]范围内的数据进行排序; 3. 利用多线程实现至少百万级规模的数据排序。 ### 编程语言 基础版排序算法由C++编写,大数版和多线程版排序算法由C语言编写。 # 程序结构 | 目录 | 功能描述 | |---|---| | basic | 基础排序算法实现 | | bd | 大数版排序算法实现 | | distributed | 多线程版排序算法实现 | | doc | 报告文档、答辩PPT等相关文档 | | img | 使用说明示例图等相关图片 | # 使用说明 ### 基础版 1.运行basic/[Final_HomeWork_base.cpp](https://gitee.com/accessskg/alg_sort/tree/main/basic/Final_HomeWork_base.cpp),输入要使用的测试数据集的数据量,以及数据量级,如:100 10000,即要求对100个、最大值为10000的数据进行排序;接着选择数据生成方式,可以手动输入也可由系统随机生成,完成对应选择、操作后,系统会在控制台打印输出待排序的数据;![输入图片说明](img/%E5%9F%BA%E7%A1%80%E7%89%88%E6%AD%A5%E9%AA%A41.jpg) 2.最后选择需要运行的排序算法,选择确认后即可完成本次排序,并打印排序后的数据以及算法用时;![输入图片说明](img/%E5%9F%BA%E7%A1%80%E7%89%88%E6%AD%A5%E9%AA%A42.jpg) 3.可根据需求输入0停止程序,或输入其他值继续测试其他算法对于上述数据的排序情况; ### 大数版 1. 运行bd/[gen_data.c](https://gitee.com/accessskg/alg_sort/blob/main/bd/gen_data.c),输入要使用的测试数据集的数据量,如100000,即可在gen_data.c同目录下生成包含所需测试数据集的文件big_data.txt。![大数版步骤1](img/%E5%A4%A7%E6%95%B0%E7%89%88%E6%AD%A5%E9%AA%A41.png) 2. 运行bd/[access_big.c](https://gitee.com/accessskg/alg_sort/blob/main/bd/access_big.c),按照提示选择要进行的操作,即可在access_big.c同目录下生成包含测试结果的文件,同时程序会打印出运行时间和排序后的前10行数据。![大数版步骤2](img/%E5%A4%A7%E6%95%B0%E7%89%88%E6%AD%A5%E9%AA%A42.png) ### 多线程版 1. 运行distributed/[random_data_dis.c](https://gitee.com/accessskg/alg_sort/blob/main/distributed/random_data_dis.c),输入要使用的测试数据集的数据量,如1000000,即可在random_data_dis.c同目录下生成包含所需测试数据集的文件data_dis.txt。![多线程版步骤1](img/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%89%88%E6%AD%A5%E9%AA%A41.jpg) 2. 运行distributed/[sort_dis.c](https://gitee.com/accessskg/alg_sort/blob/main/distributed/sort_dis.c),输入要启用的线程数量,如5,然后选择所用排序算法对应的序号,如3,即可在sort_dis.c同目录下得到排序后的文件data_dis_sorted.txt。最后,会显示本次排序的数据量、所用线程数、及时间总开销。
![多线程版步骤2](img/%E5%A4%9A%E7%BA%BF%E7%A8%8B%E7%89%88%E6%AD%A5%E9%AA%A42.jpg) # 运行样例 ### 基础版 ![基础版排序样例说明](img/%E5%9F%BA%E7%A1%80%E7%89%88%E7%AE%97%E6%B3%95%E4%BD%BF%E7%94%A8%E6%A0%B7%E4%BE%8B.jpg) ### 大数版 排序前的数据,请查看“使用说明”中生成的文件big_data.txt。其中,文件首行为数据总数量,其余为待排序的数据。
排序后的数据,请查看“使用说明”中排序后生成的文件,其内容即为排序后的数据。 ### 多线程版 排序前的数据,请查看“使用说明”中生成的文件data_dis.txt。其中,文件首行为数据总数量,其余为待排序的数据。
排序后的数据,请查看“使用说明”中生成的文件data_dis_sorted.txt,其内容即为排序后的数据。 # 许可协议 Licensed under the Apache License, Version 2.0 # 联系我们 待更新...