TeX
Data Structures 2
자료구조 II 학술 프로젝트. C 언어로 다섯 가지 정렬 알고리즘을 여러 입력 크기에 대해 벤치마킹한 후, Python/matplotlib로 성능 차트를 생성합니다.
자료구조 II 과목의 학술 프로젝트입니다. C 언어로 구현된 다섯 가지 정렬 알고리즘을 다양한 입력 크기에서 벤치마킹한 후, Python/matplotlib을 통해 성능 차트를 생성합니다.

알고리즘
| 알고리즘 | 평균 케이스 | 최악 케이스 |
|---|---|---|
| 버블 정렬 | O(n²) | O(n²) |
| 선택 정렬 | O(n²) | O(n²) |
| 삽입 정렬 | O(n²) | O(n²) |
| 퀵 정렬 | O(n log n) | O(n²) |
| 힙 정렬 | O(n log n) | O(n log n) |
작동 방식
- C 프로그램(
main.c+sorting.c)은[100, 1000, 5000, 10000, 50000, 100000]크기의 무작위 정수 배열을 생성하고, 각 알고리즘을 복사본에 대해 실행한 후 실행별 메트릭(교환 횟수, 비교 횟수, 경과 시간)을./executions/디렉토리 아래 바이너리 파일에 기록합니다. - Python 스크립트(
main.py)는 C 프로그램을 컴파일 및 실행하고, 바이너리 데이터를 읽어./graficos/디렉토리에 성능 차트를 저장합니다.
요구 사항
- GCC
- Python 3
- matplotlib (
pip install matplotlib)
사용법
# 벤치마크 실행 + 차트 생성
python main.py
또는 C 벤치마크만 실행:
make
./Trabalho_Pratico_II
출력
차트는 ./graficos/ 디렉토리에 저장됩니다:
relatorio_completo.png— 교환 횟수, 비교 횟수, 시간을 하나의 그림으로 표시trocas_comparacao.png— 알고리즘별 교환 횟수comparacoes_comparacao.png— 알고리즘별 비교 횟수tempo_comparacao.png— 알고리즘별 실행 시간
프로젝트 구조
.
├── main.c # 벤치마크 드라이버
├── sorting.c # 알고리즘 구현
├── sorting.h # 함수 선언
├── main.py # 데이터 리더 + 차트 생성기
├── makefile
├── requirements.txt
└── executions/ # 바이너리 결과 파일 (실행 시 생성)
