Я работаю над алгоритмом сортировки массива basi c, который я не совсем понимаю, хотя решение работает - PullRequest
0 голосов
/ 10 марта 2020

Мне немного непонятно в блоке if-оператора секции кода, во время l oop. Я не совсем уверен в мыслительном процессе, стоящем за установкой первого и следующего элемента для различных переменных и установкой этих истинных и ложных переменных, обратная связь приветствуется, спасибо.

вот мой код:

public void SortArray()
{
    Boolean isSorted = true;
    while(isSorted)
    {
        isSorted = false;
        for(int i=0;i<ArrayOfValues.length;i++)
        {
            for(int j=i+1;j<ArrayOfValues.length;j++) 
            {
                if(ArrayOfValues[i]>ArrayOfValues[j])
                {
                    int temp = ArrayOfValues[j];
                    ArrayOfValues[j] = ArrayOfValues[i];
                    ArrayOfValues[i] = temp;
                    isSorted = true;
                }
            }


        }
    }
}

1 Ответ

2 голосов
/ 10 марта 2020

если вы имеете в виду этот код

int temp = ArrayOfValues[j];
                    ArrayOfValues[j] = ArrayOfValues[i];
                    ArrayOfValues[i] = temp;

, то он предназначен только для замены, когда текущий элемент больше, чем элемент гнезда, алгоритм заменяет его следующим образом. простое объяснение того, как работает своп, это попытаться представить две чашки, одна из которых наполнена водой, вторая - кофе, и вы хотите поменять их местами. Вы бы принесли пустую чашку (представьте переменную temp в коде). Вы наполняете пустую чашку водой, теперь чашка, в которой была вода, пуста, и вы наполняете ее кофе. Теперь чашка, в которой есть вода, наполняется кофе, а чашка для кофе пуста, вы наполняете чашку водой, которую вы сначала положили в новую чашку. Я надеюсь, что это объяснить это

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