C&S 2024 Exam - Question 3 (a)
itsLu
c_cpp
2 years ago
1.3 kB
7
Indexable
#include <iostream>
using namespace std;
void Merge2Arrays (int arr[], int first1, int last1, int first2, int last2)
{
int *tempArray = new int [(last2 - first1) + 1], tempCounter = 0, counter1 = first1, counter2 = first2;
while (counter1 <= last1 && counter2 <= last2)
{
if (arr[counter1] < arr[counter2])
{
tempArray[tempCounter] = arr[counter1];
tempCounter++;
counter1++;
}
else
{
tempArray[tempCounter] = arr[counter2];
tempCounter++;
counter2++;
}
}
while (counter1 <= last1)
{
tempArray[tempCounter] = arr[counter1];
tempCounter++;
counter1++;
}
while (counter2 <= last2)
{
tempArray[tempCounter] = arr[counter2];
tempCounter++;
counter2++;
}
for (int k = 0 ; k < ((last2 - first1) + 1) ; k++)
arr[k + first1] = tempArray[k];
delete[] tempArray;
}
void Merge_Sort(int arr[], int first, int last)
{
if (first >= last)
return;
int mid = ((first + last) / 2);
Merge_Sort(arr, first, mid);
Merge_Sort(arr, mid + 1, last);
Merge2Arrays(arr, first, mid, mid + 1, last);
}Editor is loading...
Leave a Comment