wintest

MERGE SORT LEVEL SLAVOVA

Oct 30th, 2017
123
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 3.52 KB | None | 0 0
  1. #include<iostream>
  2. #include<clocale>
  3. using namespace std;
  4.  
  5. int totallyNewArray[5];
  6. int arr[] = { 5,4,1,4,8 };
  7. void merge(int startArray, int endArray);
  8. void mergeSort(int left, int right);
  9. int main() {
  10.     setlocale(LC_ALL, "Bulgarian");
  11.     mergeSort(0, 5);
  12.     for (size_t i = 0; i < 5; i++)
  13.     {
  14.         cout << totallyNewArray[i] << " ";
  15.     }
  16.  
  17. }
  18.  
  19. void merge(int startArray, int endArray) {
  20.     cout << "Hello, I'm merge and i'll be your guide.\nРаботим с тази част от масива:" << endl;
  21.         for (size_t j = startArray; j <= endArray; j++)
  22.         {
  23.             cout <<"arr["<<startArray<<"]="<< arr[j] <<endl;
  24.         }
  25.     cout << endl;
  26.  
  27.     int pointA = startArray;
  28.     cout << "Поинтерът към началото сочи индекс " << pointA << endl;
  29.     int pointB = ((startArray + endArray) / 2);
  30.     cout << "Поинтерът към края сочи индекс " << pointB << endl;
  31.     cout << endl;
  32.     int i = 0;
  33.  
  34.     while (pointA < ((startArray + endArray) / 2) && pointB < endArray) {
  35.         if (arr[pointA] < arr[pointB])
  36.         {
  37.             cout << arr[pointA] << " < " << arr[pointB] << " => местим " << arr[pointA] << " в новия масив!" << endl;
  38.             totallyNewArray[i] = arr[pointA];
  39.             pointA++;
  40.             i++;
  41.             cout << endl;
  42.         }
  43.         else {
  44.             cout << arr[pointB] << " < " << arr[pointA] << " => местим " << arr[pointB] << " в новия масив!" << endl;
  45.             totallyNewArray[i] = arr[pointB];
  46.             pointB++;
  47.             i++;
  48.         }cout << endl;
  49.     }
  50.     cout << "В помощния масив ситуацията изглежда така: " << endl;
  51.     for (size_t j = startArray; j <= endArray; j++)
  52.     {
  53.         cout << totallyNewArray[j] << " ";
  54.     }
  55.     cout << endl;
  56.     for (size_t j = pointA; j <((startArray + endArray) / 2); j++, i++)
  57.     {
  58.         cout << "Прехвърлям остатъка от масива от " << pointA << " до " << ((startArray + endArray) / 2) << endl;
  59.         totallyNewArray[i] = arr[j];
  60.     }
  61.  
  62.     for (size_t j = pointB; j < endArray; j++, i++)
  63.     {
  64.         cout << "Прехвърлям остатъка от масива от " << pointB << " до " << endArray << endl;
  65.         totallyNewArray[i] = arr[j];
  66.     }
  67.     cout << endl;
  68.     cout << "Помощния масив засега изглежда така: " << endl;
  69.     for (size_t j = startArray; j <= endArray; j++)
  70.     {
  71.         cout <<totallyNewArray[j] << " ";
  72.     }
  73.     cout << endl;
  74.     cout << "Прехвърлям от помощния в оригиналния чрез black magic: " << endl;
  75.     for (size_t k = startArray; k < endArray; k++)
  76.     {
  77.         cout << "arr[" << k << "]=totalyNewArray[" << k - startArray << "] = " << totallyNewArray[k - startArray] << endl;
  78.         arr[k] = totallyNewArray[k - startArray];
  79.     }
  80.     cout << "Merge is done, обратно в MergeSort!" << endl;
  81.     cout << endl;
  82. }
  83.  
  84. void mergeSort(int left, int right) {
  85.     if (left == right) {
  86.         cout << "Поздравления, вие стигнахте дъното - 1 елемент!" << endl;
  87.         return;
  88.     }
  89.     else {
  90.         cout << "Викаме merge Sort за " << endl;
  91.         for (size_t i = left; i <= (left+right)/2; i++)
  92.         {
  93.             cout << arr[i] << ",";
  94.         }
  95.         cout << endl;
  96.         mergeSort(left, (left + right) / 2);
  97.         cout << "Викаме merge Sort за " << endl;
  98.         for (size_t i = (((left + right) / 2) + 1); i <= right; i++)
  99.         {
  100.             cout << arr[i] << ",";
  101.         }
  102.         cout << endl;
  103.         mergeSort((((left + right) / 2) + 1), right);
  104.  
  105.         cout << "Викаме функцията merge за да слеем " <<endl;
  106.         for (size_t i = left;  i <= right; i++)
  107.         {
  108.             cout << arr[i] << ",";
  109.         }
  110.         cout << endl;
  111.         merge(left, right);
  112.     }
  113.  
  114. }
Add Comment
Please, Sign In to add comment