Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- void Sort::mergeSort(vector<int> &myVector, vector<int> &tmpMyVector, int left, int right)
- {
- if (left < right)
- {
- int center = (left + right) / 2;
- mergeSort(myVector, tmpMyVector, left, center);
- mergeSort(myVector, tmpMyVector, center + 1, right);
- merge(myVector, tmpMyVector, left, center + 1, right);
- }
- }
- void Sort::merge(vector<int> &myVector, vector<int> &tmpMyVector, int leftPos, int center, int rightEnd)
- {
- int leftEnd = center - 1;
- int tmpPos = leftPos;
- int numElements = rightEnd - leftPos + 1;
- // 2 Teilmengen mischen
- while (leftPos <= leftEnd && center <= rightEnd)
- {
- if (myVector[leftPos] <= myVector[center])
- {
- tmpMyVector[tmpPos] = myVector[leftPos];
- tmpPos++;
- leftPos++;
- }
- else
- {
- tmpMyVector[tmpPos] = myVector[center];
- tmpPos++;
- center++;
- }
- }
- // Kopiere den Rest der 1.ten Teilmenge
- while (leftPos <= leftEnd)
- {
- tmpMyVector[tmpPos] = myVector[leftPos];
- tmpPos++;
- leftPos++;
- }
- // Kopiere den Rest der 2.ten Teilmenge
- while (center <= rightEnd)
- {
- tmpMyVector[tmpPos] = myVector[leftPos];
- tmpPos++;
- center++;
- }
- for (int i = 0; i < numElements; i++)
- {
- myVector[rightEnd] = tmpMyVector[rightEnd];
- rightEnd--;
- }
- #ifdef _AUSGABE
- for (int z = 0; z < myVector.size(); z++)
- cout << myVector[z] << " ";
- cout << endl;
- #endif // _AUS
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement