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

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

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

Поможем написать учебную работу

Если у вас возникли сложности с курсовой, контрольной, дипломной, рефератом, отчетом по практике, научно-исследовательской и любой другой работой - мы готовы помочь.

Предоплата всего

от 25%

Подписываем

договор

Выберите тип работы:

Скидка 25% при заказе до 26.12.2024

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

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

Пример:

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. Курсовая работа- Дифференциальная диагностика стертой дизартрии и дислалии
3. реферат дисертації на здобуття наукового ступеня кандидата філологічних наук Дніпроп.html
4. Архитектура Китая
5. 4 Основные определения статистики государственного бюджета
6. Автоматизированные системы управления и бронирования в средствах размещения
7. Новосибирский государственный медицинский университет Федерального агентства по здравоохранению и социал
8. Тема 1. Сущность и содержание производственного менеджмента План занятия Сущность производственног
9. Об общественном контроле за обеспечением прав человека в местах принудительного содержания и о содействии л
10. профессиональная гигиена полости рта понимается тщательное удаление мягких и твердых зубных отложений со
11. Компьютерные профессии
12. Тема- Анализ книг Г
13. і Розглядаючи образне мислення як єдність об~єктивного і суб~єктивного можна стверджувати що воно є обов
14. Банки та їх функції
15. 111.html
16. Понятие и особенности социально-психологического тренинга
17. Епоха палацових переворотів Правитель Час перебування п
18. Тема 6. Теории социальной мобильности
19. УНІФІКОВАНА СИСТЕМА ОРГАНІЗАЦІЙНО-РОЗПОРЯДЧОЇ ДОКУМЕНТАЦІЇ Вимоги до оформлювання документів
20. .2013 Фундаментальная Библиотека 3 выпуск Ноябрь 2013 Фундаментальная Библиотека 3 выпуск Ноябрь 2013