ahmed_sa Ответов: 2

Что представляют собой внешний цикл и внутренний цикл в пузырьковой сортировке


Привет, я работаю в консольных приложениях visual studio 2015 c#.

Я пытаюсь сделать пузырьковую сортировку несортированным массивом, но не могу этого сделать

я ищу в интернете о том, что я понимаю идею .

это сделать сравнение между маленькими и самыми большими, а затем поменять местами элементы, чтобы сделать в порядке массив

но я не могу понять этот код .

так что же представляют собой внешний цикл и внутренний цикл ?

жирные линии для внешней петли и внутренней петли

/* 
 * C# Program to Perform Bubble Sort 
 */  
using System;  
class bubblesort  
{  
        static void Main(string[] args)  
        {  
            int[] a = { 30, 20, 50, 40, 10 };    
            int t;  
            Console.WriteLine("The Array is : ");  
            for (int i = 0; i < a.Length; i++)  
            {  
                Console.WriteLine(a[i]);  
            }  
            for (int j = 0; j <= a.Length - 2; j++) outer loop  
            {  
                for (int i = 0; i <= a.Length - 2; i++) inner loop  
                {  
                    if (a[i] > a[i + 1])  
                    {  
                        t = a[i + 1];  
                        a[i + 1] = a[i];  
                        a[i] = t;  
                    }  
                }  
            }  
            Console.WriteLine("The Sorted Array :");  
            foreach (int aray in a)                           
                Console.Write(aray + " ");  
            Console.ReadLine();  
        }  
    }


Что я уже пробовал:

мне нужно больше объяснить этот код

2 Ответов

Рейтинг:
2

Patrice T

С помощью пузырьковой сортировки, чтобы отсортировать 10 значений, вам нужно отсортировать 9 раз по 1 значению. И чтобы найти следующее Самое большое значение, вам нужно сравнить его с другими значениями.
Изучите алгоритм, отладчик покажет вам, как работает программа.
Пузырьковая сортировка - Википедия[^]
Обратите внимание, что программа плохо спроектирована, рабочую нагрузку можно разделить на 2.

Вы должны научиться использовать отладчик как можно скорее. Вместо того чтобы гадать, что делает ваш код, пришло время увидеть, как он выполняется, и убедиться, что он делает то, что вы ожидаете.

Отладчик-Википедия, свободная энциклопедия[^]
Освоение отладки в Visual Studio 2010 - руководство для начинающих[^]

Отладчик здесь для того, чтобы показать вам, что делает ваш код, и ваша задача-сравнить его с тем, что он должен делать.
В отладчике нет никакой магии, он не находит ошибок, он просто помогает вам. Когда код не делает того, что ожидается, вы близки к ошибке.


Рейтинг:
1

Mehedi Shams

Привет Ахмед,

Что вы подразумеваете под "Я не могу этого сделать"? Это происходит потому, что код в порядке, только вам не хватает индикатора комментариев (//).

for (int j = 0; j <= a.Length - 2; j++) //outer loop
{
    for (int i = 0; i <= a.Length - 2; i++) //inner loop
    ...........................
    ...........................
Алгоритм проверяет каждые два последовательных числа и при необходимости меняет их местами (для сортировки). После одной полной развертки (и замены чисел по мере необходимости) он снова начинает подметать весь список (начиная с самого начала) и меняет номера по мере необходимости. Первый цикл (внешний) гарантирует, что он пересекает весь массив n раз (n = количество элементов в массиве). Второй цикл (внутренний) гарантирует, что он меняет местами числа при каждом обходе.

Существует несколько вариантов пузырьковой сортировки. Сложность этого объекта составляет O (n-квадрат), поскольку он проходит в общей сложности n x n раз. Так что с точки зрения алгоритмической сложности этот вариант не очень хорош.

Лучший способ понять сортировку - запустить приложение в среде Visual Studio IDE в режиме отладки.

1) поместите точку останова в цикл for и запустите приложение (F5).
2) Затем откройте autos окно (нажмите на кнопку menu->Debug->Windows->Autos)
3) также откройте locals окно (нажмите на кнопку menu->Debug->Windows->Autos)
4) Эти два окна позволят вам просматривать значения при построчной отладке.
5) Теперь нажмите F10, и код будет выполняться построчно. Вы можете увидеть изменения переменных красным цветом в autos и locals окна. Массив "а" должен быть внутри locals окно.

Пожалуйста, погуглите еще много статей о различных вариантах сортировки пузырьков.