39 lines
1 KiB
Markdown
39 lines
1 KiB
Markdown
# External Merge Sort (Big Buffer Strategy)
|
|
A C++20 implementation of an external sorting algorithm designed to sort files that are too large to fit into the system's RAM. This project uses a Big Buffer approach to minimize disk I/O by maximizing the use of available memory during both the initial run creation and the merging phases.
|
|
|
|
# Requirements
|
|
Clang++ or G++ (Support for C++20 required)
|
|
Make
|
|
|
|
# Compilation
|
|
```bash
|
|
make
|
|
````
|
|
|
|
# Usage
|
|
|
|
The binary is located in the build/ directory after compilation.
|
|
|
|
# Generate Data
|
|
|
|
# To generate a test file with 100,000 random records:
|
|
```bash
|
|
./build/main -g 100000 -o input.dat
|
|
```
|
|
|
|
# Sort Data
|
|
|
|
To sort the generated file using 11 buffers of 10 records each:
|
|
```bash
|
|
./build/main -i input.dat -o output.dat -n 11 -b 10
|
|
```
|
|
|
|
# Options
|
|
Flag Description
|
|
- i Input file path
|
|
- o Output file path
|
|
- n Number of buffers (minimum 3)
|
|
- b Size of each buffer (number of records)
|
|
- g Generate count random records
|
|
- e Evaluate and print the contents of a file
|
|
- d Temporary directory for merge runs
|