Advertisement
Guest User

Untitled

a guest
Apr 29th, 2016
54
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.34 KB | None | 0 0
  1. void Sort::mergeSort(vector<int> &myVector, vector<int> &tmpMyVector, int left, int right)
  2. {
  3. if (left < right)
  4. {
  5. int center = (left + right) / 2;
  6. mergeSort(myVector, tmpMyVector, left, center);
  7. mergeSort(myVector, tmpMyVector, center + 1, right);
  8. merge(myVector, tmpMyVector, left, center + 1, right);
  9. }
  10. }
  11.  
  12. void Sort::merge(vector<int> &myVector, vector<int> &tmpMyVector, int leftPos, int center, int rightEnd)
  13. {
  14. int leftEnd = center - 1;
  15. int tmpPos = leftPos;
  16. int numElements = rightEnd - leftPos + 1;
  17.  
  18. // 2 Teilmengen mischen
  19. while (leftPos <= leftEnd && center <= rightEnd)
  20. {
  21. if (myVector[leftPos] <= myVector[center])
  22. {
  23. tmpMyVector[tmpPos] = myVector[leftPos];
  24. tmpPos++;
  25. leftPos++;
  26. }
  27. else
  28. {
  29. tmpMyVector[tmpPos] = myVector[center];
  30. tmpPos++;
  31. center++;
  32. }
  33. }
  34. // Kopiere den Rest der 1.ten Teilmenge
  35. while (leftPos <= leftEnd)
  36. {
  37. tmpMyVector[tmpPos] = myVector[leftPos];
  38. tmpPos++;
  39. leftPos++;
  40. }
  41. // Kopiere den Rest der 2.ten Teilmenge
  42. while (center <= rightEnd)
  43. {
  44. tmpMyVector[tmpPos] = myVector[leftPos];
  45. tmpPos++;
  46. center++;
  47. }
  48. for (int i = 0; i < numElements; i++)
  49. {
  50. myVector[rightEnd] = tmpMyVector[rightEnd];
  51. rightEnd--;
  52. }
  53. #ifdef _AUSGABE
  54. for (int z = 0; z < myVector.size(); z++)
  55. cout << myVector[z] << " ";
  56. cout << endl;
  57. #endif // _AUS
  58. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement