Сортировка пузырьком C#

  • Пользователь вводит длинну массива, программа создаёт массив типа int с указанной длинной, программа заполняет его случайными символами
  • Программа выводит массив, который получился, в коносоль до сортировки
  • Программа вызывает метод сортировки, подавая в него наш массив.
  • Программа снова выводит обновлённый массив, уже в отсортированном виде. Готовые методы типа Array.Sort использовать запрещено.

код :

using System;
using System.IO;
using System.Linq; // Библиотека чтобы работал системный буфер обмена
using System.Text;
using System.Windows.Forms;

namespace ConsoleApp9
{
    internal class Program
    {
        [STAThread] // чтобы работал системный буфер обмена
        public static void Main(string[] args)
        {
            Start();
            WriteColorText("Введи длину массива: ", ConsoleColor.Yellow);
            int dlina = int.Parse(Console.ReadLine());
            Console.WriteLine();
            int[] bubble = new int[dlina];
       
            Random random = new Random();

            for (int i = 0; i < bubble.Length; i++)
            {
                bubble[i] = random.Next(15);
            }
            // Вывожу созданый оригинальный масив с рандомными элементами и длиной которую указал пользователь
            for (int i = 0; i < bubble.Length; i++)
            {
                WriteColorText2($"До сортировки: элемент №{i} = {bubble[i]}", ConsoleColor.Yellow); 
            }
           
            WriteColorText2("_______________________________________\n", ConsoleColor.White);

            int[] result = Bubblsort(bubble, dlina);  // присваиваю значение то что возрощает мой метод 

            for (int i = 0;i < result.Length; i++)
            {
                WriteColorText2($"После сортировки: Элемент№{i} = {result[i]}", ConsoleColor.White); 
                // вывожу уже  отсортированый массив
            }

            WriteColorText(Console.ReadLine(), ConsoleColor.Magenta);
        }

        public static void Start()
        {
            Console.OutputEncoding = Encoding.UTF8;
            Console.InputEncoding = Encoding.GetEncoding(1251);
            Console.ForegroundColor = ConsoleColor.Cyan;
            Console.WriteLine($"      \\_      *| *   _/");
            Console.WriteLine($"      \\_       -     _/");
            Console.ForegroundColor = ConsoleColor.DarkYellow;
            Console.WriteLine($"      \\_Wise Coding™_/");
            Console.ForegroundColor = ConsoleColor.White;
        }

        public static void WriteColorText(string a, ConsoleColor cvet) // метод в который можно подавать цвет и текст 
        {
            Console.ForegroundColor = cvet;
            Console.Write(a);
        }

        public static void WriteColorText2(string a, ConsoleColor cvet) // метод в который можно подавать цвет и текст 
        {
            Console.ForegroundColor = cvet;
            Console.WriteLine(a);
        }

        public static int[] Bubblsort(int[] bubble, int dlina)
        {
       
            for (int i = 0; i < bubble.Length; i++)
            {
                for (int j = i + 1; j < bubble.Length; j++)
                {
                    if (bubble[i] > bubble[j])   // если первий елемент больше второго то меняю местами
                    {
                        int swap = bubble[i];  
                        bubble[i] = bubble[j]; 
                        bubble[i] = swap;
                    
                    }
                }
           
            }
            
            return bubble;   // вернёт значение  сортированого массива
        }
    }
}

P.S У меня выводит 2 раза один и тот же массив , подскажите как исправить введите сюда описание изображения


Ответы (1 шт):

Автор решения: iiKuzmychov

Вас не смущает этот код?

int swap = bubble[i];  
bubble[i] = bubble[j]; 
bubble[i] = swap;
//     ^

В последней строчке явно должно быть не [i], а [j].

Ну и в свежем C# этот код можно заменить на куда более простой:

(bubble[i], bubble[j]) = (bubble[j], bubble[i]);
→ Ссылка