Меняется значение массива - 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(); // Далее без изменений ... }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д