Меняется значение массива - 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();
    // Далее без изменений ...
}

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

15   голосов , оценка 4.067 из 5
Похожие ответы