-
테스트용 난수 생성 및 시간 체크 함수 구현
알고리즘의 효율성 테스트를 위해 1,000,000 개의 난수를 생성하여 텍스트 파일로 저장 및 불러오기 함수 구현
common.hpp
#pragma once #include <iostream> #include <fstream> #include <ctime> #define MAKE_RANDOM_NUMBERS #ifdef MAKE_RANDOM_NUMBERS #include <random> #include <limits> #endif namespace Common { #ifdef MAKE_RANDOM_NUMBERS int* GenerateRandomNumber(int n = 100'000) { std::default_random_engine randomEngine; std::uniform_int_distribution<int> distribution(0, INT_MAX); int* arr = new int[n]; for (int i = 0; i < n; ++i) { arr[i] = distribution(randomEngine); } return arr; } void MakeRandomNumbersFile(int n = 100'000) { int* arr = GenerateRandomNumber(n); std::ofstream ofs("./Randoms.txt"); ofs << n << "; "; for (int i = 0; i < n; ++i) { ofs << arr[i] << "; "; } ofs.close(); } #endif #pragma region 파일 입출력 int LoadRandomNumbersInFile(int** arr) { std::ifstream ifs("./Randoms.txt"); int n; ifs >> n; *(arr) = new int[n]; for (int i = 0; i < n; ++i) { ifs >> (*arr)[i]; } ifs.close(); return n; } #pragma endregion #pragma region 시간 측정 std::clock_t startTime; std::clock_t endTime; void StartClock() { startTime = std::clock(); } void StopClock() { endTime = std::clock(); } void PrintElapsedTime() { std::clock_t elapsed = endTime - startTime; double timeSecond = static_cast<double>(elapsed / CLOCKS_PER_SEC); std::cout << "total time is " << timeSecond << "s ( " << elapsed << "ms )\n"; } #pragma endregion }
선택 정렬 시간 측정
main.cpp
#include "Sort/SelectionSort.hpp" #include "Common.hpp" int main() { int n = 10; int* arr; // 동작 테스트를 위한 값 //arr = new int[n]{ 2, 4, 6, 8, 10, 9, 7, 5, 3, 1 }; // 시간 테스트를 위한 값 n = Common::LoadRandomNumbersInFile(&arr); Common::StartClock(); SelectionSort(arr, n/*/, true/**/); Common::StopClock(); Common::PrintElapsedTime(); delete[] arr; }
측정 결과
total time is 452s ( 452361ms )
Algorithm/Randoms.txt at main · NadanKim/Algorithm · GitHub
NadanKim/Algorithm
알고리즘 학습 및 예제 코드 작성을 위한 저장소. Contribute to NadanKim/Algorithm development by creating an account on GitHub.
github.com