Data Structures 2
TeX

Data Structures 2

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

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

알고리즘 결과를 설명하는 Python 코드로 생성된 보고서

알고리즘

알고리즘 평균 케이스 최악 케이스
버블 정렬 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)

작동 방식

  1. C 프로그램(main.c + sorting.c)은 [100, 1000, 5000, 10000, 50000, 100000] 크기의 무작위 정수 배열을 생성하고, 각 알고리즘을 복사본에 대해 실행한 후 실행별 메트릭(교환 횟수, 비교 횟수, 경과 시간)을 ./executions/ 디렉토리 아래 바이너리 파일에 기록합니다.
  2. 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/     # 바이너리 결과 파일 (실행 시 생성)