Меняется значение массива - C#
Формулировка задачи:
Написал программу для сортировки массива методом Шелла и вставками.При вызове метода Шелла,массив сортируется правильно,но он возвращается в array,то есть Main() отсортированным.Следовательно в метод вставками он поступает уже отсортированным предыдущим методом.Как исправить,чтобы после сортировки методом Шелла массив не заносился в array отсортированным?
class algorithms
{
static void Shell(int[] arr)
{
int j;
Console.WriteLine("Метод Шелла");
Console.Write("Массив до сортировки: ");
foreach (int n in arr)
{
Console.Write(n + " ");
}
int step = arr.Length / 2;
while (step > 0)
{
for (int i = 0; i < (arr.Length - step); i++)
{
j = i;
while ((j >= 0) && (arr[j] > arr[j + step]))
{
int tmp = arr[j];
arr[j] = arr[j + step];
arr[j + step] = tmp;
j -= step;
}
}
step = step / 2;
}
Console.Write("\nМассив после сортировки: ");
foreach (int n in arr)
{
Console.Write(n + " ");
}
Console.Write("\n\n");
}
static void Vstavkami(int[] arr)
{
Console.Write("Массив до сортировки: ");
foreach (int n in arr)
{
Console.Write(n + " ");
}
for (int i = 0; i < arr.Length - 1; i++)
{
for (int j = i + 1; j > 0; j--)
{
if (arr[j - 1] > arr[j])
{
int temp = arr[j - 1];
arr[j - 1] = arr[j];
arr[j] = temp;
}
}
}
Console.Write("\nМассив после сортировки: ");
foreach (int n in arr)
{
Console.Write(n + " ");
}
}
static void Main()
{
int[] array = { 49, 28, 74, 56, 81, 14, 76, 44 };
//Сортировка методом Шелла
Shell(array);
//Метод вставками
Vstavkami(array);
Console.ReadKey();
}
}Решение задачи: «Меняется значение массива»
textual
Листинг программы
static void Shell(int[] arr)
{
arr = (int[])arr.Clone();
// Далее без изменений ...
}
static void Vstavkami(int[] arr)
{
arr = (int[])arr.Clone();
// Далее без изменений ...
}