namespace DataStructures { class Program { static void Main(string[] args) { int[] myArray = { 1, 3, 2, 4 }; Sort(myArray, 0, myArray.Length - 1); } static void Sort(int[] myArray, int left, int right) { if ((right - left) >= 1)
Determine the output.
namespace DataStructures
{
class Program
{
static void Main(string[] args)
{
int[] myArray = { 1, 3, 2, 4 };
Sort(myArray, 0, myArray.Length - 1);
}
static void Sort(int[] myArray, int left, int right)
{
if ((right - left) >= 1)
{
int middle1 = (left + right) / 2;
int middle2 = middle1 + 1;
DisplayArray(myArray, left, right);
DisplayArray(myArray, left, middle1);
DisplayArray(myArray, middle2, right);
Console.WriteLine("___________________________________________");
Sort(myArray, left, middle1);
Sort(myArray, middle2, right);
Combine(myArray, left, middle1, middle2, right);
} }
static void Combine(int[] myArray, int left, int middle1, int middle2, int right)
{
int[] combined = new int[myArray.Length];
int leftindex = left;
int rightindex = middle2;
int combinedindex = left;
DisplayArray(myArray, left, middle1);
DisplayArray(myArray, middle2, right);
while (leftindex <= middle1 && rightindex <= right)
{
if (myArray[leftindex] > myArray[rightindex])
combined[combinedindex++] = myArray[leftindex++];
else
}
combined[combinedindex++] = myArray[rightindex++];
while (leftindex <= middle1)
{
combined[combinedindex++] = myArray[leftindex++];
}
while (rightindex <= right)
{
combined[combinedindex++] = myArray[rightindex++];
}
for (int i = left; i <= right; i++)
myArray[i] = combined[i];
DisplayArray(myArray, left, right);
}
static void DisplayArray(int[] myArray, int start, int right)
{
for (int i = start; i <= right; i++)
Console.Write("{0} ", myArray[i]);
Consol.writeline();
}
}
}
Trending now
This is a popular solution!
Step by step
Solved in 2 steps