С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.83/6: Рейтинг темы: голосов - 6, средняя оценка - 4.83
1 / 1 / 0
Регистрация: 04.05.2020
Сообщений: 12

Сортировка пузырём

20.05.2020, 08:32. Показов 1290. Ответов 8

Студворк — интернет-сервис помощи студентам
Здравстуйте,

почему цикл не заводится если не указать arr.length-1?
Ещё одна проблема - последний элемент из массива не отображается в отсортированном массиве. Как быть? Т.е. в виде отсортированного массива выводится все кроме последнего элемента. Я понимаю, что "-1" не дает добраться до последнего элемента, но без этого "-1" почему то прога не заводится.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
public class Array {
    
    public static void main(String[] args) {
        
        int[] arr = {199, 2, -1, 3, 2, 9, 76, 200};
        int elem;
        
        for(int i=0; i<arr.length-1; i++) {
            if (arr[i] > arr[i+1]) {
            elem = arr[i];
            arr[i] = arr[i+1];
            arr[i+1] = elem;
            }
        System.out.println(arr[i]);
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.05.2020, 08:32
Ответы с готовыми решениями:

Сортировка с пузырём
Здравствуйте. Начал изучать сортировки, хотел написать свой &quot;пузырек&quot;, а оно чего-то работать не хочет, зацикливается. Поглядите,...

отсортировать пузырём двумерным массив
Как отсортировать пузырём двумерным массив (n-m) чтобы сумма не увеличивалась???

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

8
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
20.05.2020, 08:42
Цитата Сообщение от Leroy354 Посмотреть сообщение
почему цикл не заводится если не указать arr.length-1?
поэтому arr[i] > arr[i+1]
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.05.2020, 08:46
Цитата Сообщение от Leroy354 Посмотреть сообщение
почему то прога не заводится
Как ты думаешь, куда будет указывать на последнем элементе arr[i+1] ?

Добавлено через 1 минуту
Цитата Сообщение от Leroy354 Посмотреть сообщение
Т.е. в виде отсортированного массива
Твой код не отсортирует массив

Добавлено через 1 минуту
Цитата Сообщение от Leroy354 Посмотреть сообщение
последний элемент из массива не отображается
Потому что массив надо отображать после сортировки, а не в процессе сортировки. По крайней мере после каждой итерации.
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
20.05.2020, 08:49
Цитата Сообщение от iSmokeJC Посмотреть сообщение
не отсортирует массив
ну, может он исследует "всплывание"...
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.05.2020, 08:53
Aviz__, ну вот я и говорю - тогда после каждой итерации. Иначе дичь полная получится. Точнее уже получилась
0
Супер-модератор
Эксперт функциональных языков программированияЭксперт Python
 Аватар для Catstail
38167 / 21102 / 4307
Регистрация: 12.02.2012
Сообщений: 34,690
Записей в блоге: 14
20.05.2020, 17:34
Leroy354, даже поверхностный взгляд сразу говорит: этот код правильным быть не может. В пузырьковой сортировке должно быть два вложенных цикла... Или рекурсия, но о грустном не будем.
0
1 / 1 / 0
Регистрация: 04.05.2020
Сообщений: 12
20.05.2020, 22:55  [ТС]
Сначала мне было стыдно задавать этот вопрос про сортировку, но потом я вспомнил, что мы в интернете и мне полегчало.

В общем, по факту эта хрень сортирует массив и даже выводит (кроме последнего значения)
Но естественно, что все это не верно.

На скрине ниже показано, что при выносе println за цикл выводятся не цифры из массива, а какие то символы.



Как я вижу- цикл прогоняется пока arr[i] больше, чем следующее число. Поэтому зачем тут второй цикл?


Но я не понимаю как исправить - "Index 8 out of bounds for length 8" если в строке for(int i=0; i<= arr.length; i++) должно быть указано кол-во циклов не более, чем кол-во чисел в массиве.
Миниатюры
Сортировка пузырём  
0
Эксперт PythonЭксперт Java
19530 / 11067 / 2931
Регистрация: 21.10.2017
Сообщений: 23,294
20.05.2020, 23:12
Цитата Сообщение от Leroy354 Посмотреть сообщение
Но я не понимаю
Давай еще раз.
Во-первых, индексация элементов начинается с нуля.
Т.е. в массиве длиной (length) 5 элементов, последний имеет индекс [4]!!!
Когда у тебя счетчик цикла (i) доходит до последнего значения, i+1 чему будет равно? Есть такой элемент в массиве?

Добавлено через 1 минуту
Цитата Сообщение от Leroy354 Посмотреть сообщение
На скрине ниже показано
Java
1
System.out.println(Arrays.toString(arr));
Добавлено через 3 минуты
Цитата Сообщение от Leroy354 Посмотреть сообщение
зачем тут второй цикл?
Исходник -
3-6-1-9-2-4-6-2
Первый проход -
3-1-6-2-4-6-2-9
Массив отсортирован?
0
 Аватар для Aviz__
2736 / 2046 / 506
Регистрация: 17.02.2014
Сообщений: 9,462
21.05.2020, 08:19
Цитата Сообщение от Leroy354 Посмотреть сообщение
я вспомнил, что мы в интернете
будет просто супер легко, если ты еще вспомнишь, что есть Ютуб)). там есть несколько тысяч видео, где на пальцах все показывается. или берешь три числа 9,5,1 и руками, на бумажке делаешь то, что делает твоя программа.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
21.05.2020, 08:19
Помогаю со студенческими работами здесь

Блок схема.Сортировка «Пузырьком», Сортировка методом «Последовательных перестановок», Сортировка «Вставками»
Помогите, нужны блок схемы Сортировка «Вставками» Program Vstavka; uses dos; Type mass=array of integer; Var i,b,n,j,a:...

Разработать программу сортировки: сортировка перестановкой, сортировка вставкой, быстрая сортировка
Задание: Разработать программу сортировки: - сортировка перестановкой - сортировка вставкой - быстрая сортировка

1)Бинарный поиск 2)Сортировка включением 3)Шейкерная сортировка 4)Сортировка разделением
1)В заданном массиве К(N) найти индексы элементов, которые кратны минимальному значению элемента массива. 2)Задан массив AX (N). Добавить...

Сортировка Шелла. Написал программу, не могу понять, почему сортировка не выполняется
Программа создает динамический массив с рандомным заполнением. Дальше выбор сортировок, пузырьком или сортировка Шелла. Вот она то и не...

Сортировка массива целых чисел A(n) по убыванию(используя метод обменная сортировка)
Помогите написать программу для сортировки массива целых чисел A(n) по убыванию(используя метод обменная сортировка). Или хотя бы без этого...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
Изучаю kubernetes
lagorue 13.01.2026
А пригодятся-ли мне знания kubernetes в России?
Сукцессия микоризы: основная теория в виде двух уравнений.
anaschu 11.01.2026
https:/ / rutube. ru/ video/ 7a537f578d808e67a3c6fd818a44a5c4/
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru