# 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的数据进行排序;接着选择数据生成方式,可以手动输入也可由系统随机生成,完成对应选择、操作后,系统会在控制台打印输出待排序的数据;
2.最后选择需要运行的排序算法,选择确认后即可完成本次排序,并打印排序后的数据以及算法用时;
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。
2. 运行bd/[access_big.c](https://gitee.com/accessskg/alg_sort/blob/main/bd/access_big.c),按照提示选择要进行的操作,即可在access_big.c同目录下生成包含测试结果的文件,同时程序会打印出运行时间和排序后的前10行数据。
### 多线程版
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。
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。最后,会显示本次排序的数据量、所用线程数、及时间总开销。

# 运行样例
### 基础版

### 大数版
排序前的数据,请查看“使用说明”中生成的文件big_data.txt。其中,文件首行为数据总数量,其余为待排序的数据。
排序后的数据,请查看“使用说明”中排序后生成的文件,其内容即为排序后的数据。
### 多线程版
排序前的数据,请查看“使用说明”中生成的文件data_dis.txt。其中,文件首行为数据总数量,其余为待排序的数据。
排序后的数据,请查看“使用说明”中生成的文件data_dis_sorted.txt,其内容即为排序后的数据。
# 许可协议
Licensed under the Apache License, Version 2.0
# 联系我们
待更新...