Будь умным!


У вас вопросы?
У нас ответы:) SamZan.net

Если пройдёмся по любому массиву установив правильный порядок в каждой паре соседних элементов то после то

Работа добавлена на сайт samzan.net:


Сортировка методом пузырька

Суть алгоритма такова. Если пройдёмся по любому массиву установив правильный порядок в каждой паре соседних элементов, то после того прохода на последнем месте массива гарантированно будет стоять нужный элемент (самый большой для сортировки по возрастанию или самый маленький для сортировки по убыванию). Если ещё раз пройтись по массиву с такими же преобразованиями, то и на предпоследнем месте гарантированно окажется нужный элемент. И так далее.

Пример:

2 9 1 4 3 5 2 → порядок правильный, не будет перестановки

2 9 1 4 3 5 2 → 2 1 9 4 3 5 2

2 1 9 4 3 5 2 → 2 1 4 9 3 5 2

2 1 4 9 3 5 2 → 2 1 4 3 9 5 2

2 1 4 3 9 5 2 → 2 1 4 3 5 9 2

2 1 4 3 5 9 2 → 2 1 4 3 5 2 9

Код:

/* Внешний цикл постоянно сужает фрагмент массива,
 * который будет рассматриваться, ведь после каждого прохода
 * внутреннего цикла на последнем месте фрагмента будет
 * оказываться нужный элемент (его не надо рассматривать снова).
 */
for (int i = a.length - 1; i >= 2; i--) {
    /* В переменной sorted мы будем хранить признак того,
     * отсортирован ли массив. Перед каждым проходом внутреннего
     * цкла будем предполагать, что отсортирован, но если совершим
     * хоть одну перестановку, то значит ещё не конца отсортирован.
     * Этот приём, упрощающий сортировку, называется критерием Айверсона.
     */
    boolean sorted = true;
    /* Во внутреннем цикле мы проходимся по фрагменту массива, который
     * определяется внешним циклом. В этом фрагменте мы устанавливаем
     * правильный порядок между соседними элементами, так попарно
     * обрабатывая весь фрагмент.
     */
    for (int j = 0; j < i; j++) {
        /* Если порядок соседних элементов не правильный, то их
         * надо обменять местами. И запомнить, что была перестановка.
         */
        if (a[j] > a[j+1]) {
            int temp = a[j];
            a[j] = a[j+1];
            a[j+1] = temp;
            sorted = false;
        }
    }
    /* Если массив отсортирован (т.е. не было ни одной перестановки
     * во внутреннем цикле, значит можно прекращать работу внешнего
     * цикла.
     */
   
if(sorted) {
       
break;
   
}
}




1. Вступление
2. 10 правил маркетингового исследования
3. а на получение части прибыли акционерного общества в виде дивидендов на участие в управлении акционерным об
4. Былтыр~ы 2012 жылды~ ~араша айында баспас~зде ~аза~стан Республикасыны~ Президентімен бекітілген жергілікт
5. Бекітемін ~лтты~ ~~
6. Об одном орфографическом поветрии
7. Концепция построения и этапы совершенствования объединенной системы распределения тактической информации JTIDS
8. Автоматизация расчета начислений заработной платы в строительном управлении N 151.html
9. Тема- ~~АИГерцен~ Исполнитель- студентка гр
10. Контрольная Общ
11. . Плогия как наука ее предмет задачи и роль в общной жизни.
12. Автовышки
13. 1аддетивныеэффект воздействия равен сумме воздействия факторов 2синергитическиесуммарный эффект выше а
14. Тема- Глобализация и мировая политика Глобализация как одна из наиболее важных тенденций развития мира в на
15. Тема Творческая проектная деятельность
16. Курсовая работа- Анализ особенностей художественного стиля гомеровского эпоса
17. Использование доходного подхода в процессе оценки недвижимости1
18. Курсовая работа- Интеграционные процессы в Азиатско-Тихоокеанском регионе- особенности, проблемы, тенденции
19. тема общества ~ это связи между производителями и потребителями материальных и нематериальных благ и услуг
20. Спецслужбы Израил