Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #include<iostream>
- #include<clocale>
- using namespace std;
- int totallyNewArray[5];
- int arr[] = { 5,4,1,4,8 };
- void merge(int startArray, int endArray);
- void mergeSort(int left, int right);
- int main() {
- setlocale(LC_ALL, "Bulgarian");
- mergeSort(0, 5);
- for (size_t i = 0; i < 5; i++)
- {
- cout << totallyNewArray[i] << " ";
- }
- }
- void merge(int startArray, int endArray) {
- cout << "Hello, I'm merge and i'll be your guide.\nРаботим с тази част от масива:" << endl;
- for (size_t j = startArray; j <= endArray; j++)
- {
- cout <<"arr["<<startArray<<"]="<< arr[j] <<endl;
- }
- cout << endl;
- int pointA = startArray;
- cout << "Поинтерът към началото сочи индекс " << pointA << endl;
- int pointB = ((startArray + endArray) / 2);
- cout << "Поинтерът към края сочи индекс " << pointB << endl;
- cout << endl;
- int i = 0;
- while (pointA < ((startArray + endArray) / 2) && pointB < endArray) {
- if (arr[pointA] < arr[pointB])
- {
- cout << arr[pointA] << " < " << arr[pointB] << " => местим " << arr[pointA] << " в новия масив!" << endl;
- totallyNewArray[i] = arr[pointA];
- pointA++;
- i++;
- cout << endl;
- }
- else {
- cout << arr[pointB] << " < " << arr[pointA] << " => местим " << arr[pointB] << " в новия масив!" << endl;
- totallyNewArray[i] = arr[pointB];
- pointB++;
- i++;
- }cout << endl;
- }
- cout << "В помощния масив ситуацията изглежда така: " << endl;
- for (size_t j = startArray; j <= endArray; j++)
- {
- cout << totallyNewArray[j] << " ";
- }
- cout << endl;
- for (size_t j = pointA; j <((startArray + endArray) / 2); j++, i++)
- {
- cout << "Прехвърлям остатъка от масива от " << pointA << " до " << ((startArray + endArray) / 2) << endl;
- totallyNewArray[i] = arr[j];
- }
- for (size_t j = pointB; j < endArray; j++, i++)
- {
- cout << "Прехвърлям остатъка от масива от " << pointB << " до " << endArray << endl;
- totallyNewArray[i] = arr[j];
- }
- cout << endl;
- cout << "Помощния масив засега изглежда така: " << endl;
- for (size_t j = startArray; j <= endArray; j++)
- {
- cout <<totallyNewArray[j] << " ";
- }
- cout << endl;
- cout << "Прехвърлям от помощния в оригиналния чрез black magic: " << endl;
- for (size_t k = startArray; k < endArray; k++)
- {
- cout << "arr[" << k << "]=totalyNewArray[" << k - startArray << "] = " << totallyNewArray[k - startArray] << endl;
- arr[k] = totallyNewArray[k - startArray];
- }
- cout << "Merge is done, обратно в MergeSort!" << endl;
- cout << endl;
- }
- void mergeSort(int left, int right) {
- if (left == right) {
- cout << "Поздравления, вие стигнахте дъното - 1 елемент!" << endl;
- return;
- }
- else {
- cout << "Викаме merge Sort за " << endl;
- for (size_t i = left; i <= (left+right)/2; i++)
- {
- cout << arr[i] << ",";
- }
- cout << endl;
- mergeSort(left, (left + right) / 2);
- cout << "Викаме merge Sort за " << endl;
- for (size_t i = (((left + right) / 2) + 1); i <= right; i++)
- {
- cout << arr[i] << ",";
- }
- cout << endl;
- mergeSort((((left + right) / 2) + 1), right);
- cout << "Викаме функцията merge за да слеем " <<endl;
- for (size_t i = left; i <= right; i++)
- {
- cout << arr[i] << ",";
- }
- cout << endl;
- merge(left, right);
- }
- }
Add Comment
Please, Sign In to add comment