Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- for (int k = start; k < end; k++)
- {
- if (L.at(x) <= R.at(y))
- {
- v.at(k) = L.at(x); // out of bounds
- x++;
- }
- else
- {
- v.at(k) = R.at(y); // out of bounds
- y++;
- }
- }
- #include <iostream>
- #include <fstream>
- #include <string>
- #include <vector>
- #include <algorithm>
- using namespace std
- vector<string> readFile(string fileName) {
- /* reads a textfile into vector. Works dandy. */ }
- vector<string> merge(vector<string>& v, int start, int mid, int end)
- {
- int n1 = mid - start + 1;
- int n2 = end - mid;
- vector<string> L;
- vector<string> R;
- L.resize(n1 + 1); // size left vector
- R.resize(n2 + 1); // size right vector
- for (int i = 1; i < n1; i++) {
- L.at(i) = v.at(start + i - 1); // populate left vector
- }
- for (int j = 1; j < n2; j++) {
- R.at(j) = v.at(mid + j); // populate right vector
- }
- int x = 1;
- int y = 1;
- for (int k = start; k < end; k++)
- {
- if (L.at(x) <= R.at(y)) {
- v.at(k) = L.at(x); // merge left vector into v
- x++;
- }
- else{
- v.at(k) = R.at(y); // merge right vector into v
- y++;
- }
- }
- return v;
- }
- vector<string> mergeSort(vector<string>& v, int start, int end)
- {
- int middle;
- if (start < end) // base case
- {
- middle = (start + end) / 2; // find middle
- mergeSort(v, start, middle); // divide vectors
- mergeSort(v, middle + 1, end);
- merge(v, start, middle, end); // merge sorted vectors
- }
- return v;
- }
- int main() {
- vector<string> vectorReadIn;
- vector<string> sortedVector;
- int x = 0;
- string fileName = "C:/Users/User/Downloads/Algorithims/Perm Words/perm15k.txt";
- vectorReadIn = readFile(fileName); // reads file into vector
- sortedVector = mergeSort(vectorReadIn, 1, vectorReadIn.size()); // calls mergesort
- cout << "Sorted file:" << endl;
- while (x < 8) {
- cout << sortedVector.at(x);
- x++; }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement