@albyaman
Студент

Сортировка пузырьком. Первый элемент?

Не считается 1 элемент сортировки. В чем проблема. Заранее спасибо
class Program
    {

        static void Main(string[] args)
        {
            int[] mas = { 4, 5, 25, 21, 0, 8, 6, 97, 60, 46, 54 };
            Sort Ring = new Sort();
            foreach (int item in Ring.Search(mas))
            {
                Console.Write("{0}, ", item);
            }
            Console.ReadKey();
        }
    }
    class Sort
    {
        // Сортировка пузырьком
        public int[] Search(int[] gmas)
        {
            for (int i = 1; i < gmas.Length; i++)
            {
                if (gmas[i - 1] > gmas[i])
                {
                    int LastPoint = gmas[i];
                    gmas[i] = gmas[i - 1];
                    gmas[i - 1] = LastPoint;
                    i = 1;
                }

            }
            return gmas;
        }
    }

Выход 16b135db2e854019ac1ff69e32d352b3.png
  • Вопрос задан
  • 296 просмотров
Решения вопроса 1
alsopub
@alsopub
Попробуйте i = 1; заменить на i = 0;
Дело в том, что после цикла (после i=1;) будет выполнено i++.

UPD. Вдруг кто-то еще не поймет где надо заменить 1 на 0, приведу полный код:
class Program
    {

        static void Main(string[] args)
        {
            int[] mas = { 4, 5, 25, 21, 0, 8, 6, 97, 60, 46, 54 };
            Sort Ring = new Sort();
            foreach (int item in Ring.Search(mas))
            {
                Console.Write("{0}, ", item);
            }
            Console.ReadKey();
        }
    }
    class Sort
    {
        // Сортировка пузырьком
        public int[] Search(int[] gmas)
        {
            for (int i = 1; i < gmas.Length; i++)
            {
                if (gmas[i - 1] > gmas[i])
                {
                    int LastPoint = gmas[i];
                    gmas[i] = gmas[i - 1];
                    gmas[i - 1] = LastPoint;
                    i = 0; // заменяли только эту строчку
                }

            }
            return gmas;
        }
    }

Всем удачи и будьте внимательнее.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
a_volkov1987
@a_volkov1987
Инженер-схемотехник
Это не сортировка пузырьком. Это бред. Посмотрите на википедии реализации:
https://ru.wikipedia.org/wiki/%D0%A1%D0%BE%D1%80%D...

public int[] Search(int[] gmas)
{
    for (int i = 0; i < gmas.length-1; i++) 
    {
        bool swapped = false;
        for (int j = 0; j < gmas.length-i-1; j++) 
        {
            if (gmas[j] > gmas[j+1]) 
            {
                int b = gmas[j]; 
                gmas[j] = gmas[j+1];
                gmas[j+1] = b;
                swapped = true;
            }
        }
        if(!swapped)
        break;
    }
}
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы