#include "sorts.h" #include <iostream> #include <fstream> #include <string> #include <vector> Sorter::Sorter(std::string newFilename) { lineCount = 0; currentType = INSERTION; SetFilename(newFilename); SetWordList(); } void Sorter::SetFilename(std::string newName) { this->filename = newName; } std::string Sorter::GetFilename(void) { return this->filename; } void Sorter::SetWordList(void) { std::string bufferStr; std::ifstream file(this->filename); if (!file.is_open()) { std::cout << "Failed opening file\n"; exit(1); } while (getline(file, bufferStr)) { originalWordList.push_back(bufferStr); lineCount++; } return; } void Sorter::RunSorts(void) { newWordList = originalWordList; InsertionSort(); OutputResult(); currentType = MERGE; newWordList = originalWordList; MergeSort(); OutputResult(); currentType = HEAP; newWordList = originalWordList; HeapSort(); OutputResult(); } void Sorter::OutputResult(void) { switch(currentType) { case INSERTION: PrintToFile("IS"); break; case MERGE: PrintToFile("MS"); break; case HEAP: PrintToFile("HS"); break; default: break; } } void Sorter::PrintToFile(std::string outputFilename) { std::string outputPath = "test/OUTPUT/"; outputPath += outputFilename; outputPath += std::to_string(lineCount / 1000); outputPath += "K.txt"; std::ofstream file(outputPath); if (!file.is_open()) { std::cout << "Failed opening file\n"; exit(1); } for (unsigned int i = 0; i < lineCount; i++) file << newWordList[i] << '\n'; file.close(); } void Sorter::InsertionSort(void) { int i; std::string key; for (int j = 1; j < lineCount; j++) { key = newWordList[j]; i = j - 1; while ((i >= 0) && (newWordList[i] > key)) { newWordList[i + 1] = newWordList[i]; i = i - 1; } newWordList[i + 1] = key; } } void Sorter::MergeSort(void) { ; } void Sorter::__MergeSort__(void) { ; } void Sorter::__Merge__(void) { ; } void Sorter::HeapSort(void) { ; }