25.02.2017, 15:20 | #1 (permalink) |
Member
Регистрация: 11.12.2016
Сообщений: 26
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Сортировка массива
Код:
program sort_puzyr{ сортировка массива "пузырьком" по возрастанию }; const n = 10; var a:array[1..n] of integer; i,j,buf:integer; begin for i:=1 to n do begin a[i]:=random(10); write(a[i],' '); end; for i:=1 to n-1 do for j:=i+1 to n do if a[i]>a[j] then begin buf:=a[i]; a[i]:=a[j]; a[j]:=buf; end; writeln; writeln('Массив после сортировки пузырьковым методом: '); for i:=1 to n do write(a[i],' '); Код:
for i:=1 to n-1 do for j:=i+1 to n do А еще эта строка : Код:
buf:=a[i]; a[i]:=a[j]; a[j]:=buf; Буду благодарен за подробный ответ |
25.02.2017, 15:20 | |
Helpmaster
Member
Регистрация: 08.03.2016
Сообщений: 0
|
Посмотрите аналогичные темы на нашем форуме Сортировка двумерного массива на QT Сортировка массива Сортировка массива |
25.02.2017, 15:41 | #2 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
Рекомендую не "бродить по просторам интернета", а заглянуть в мои заметки по методам упорядочения массивов. Там "пузырёк" рассмотрен ну очень подробно. С примером.Уверяю Вас, ничего там лишнего нет!
Давайте разбираться. Пусть, к примеру, у Вас есть две переменных а и b, которым присвоены значения a=3, b=7. А Вам надо, чтобы стало наоборот, a=7, b=3. Делается это так: 1. Вводим дополнительную переменную, например, buf. 2. Присваиваем ей значение а, т.е. теперь у нас a=3, b=7, buf=3. 3. Переменной a присваиваем значение b, т.е. имеем: a=7, b=7, buf=3. 4. Переменной b присваиваем значение buf, т.е. теперь a=7, b=3, buf=3. Что и требовалось. Задача решена. И что тут Вы видите "лишнего"? Попробуйте иначе. Я, например, других способов не знаю. А если Вы думаете, что для обмена значениями достаточно написать a:=b; b:=a; то в результате получите a=b=7, поскольку после первого действия тройка будет утрачена навсегда. |
25.02.2017, 15:42 | #3 (permalink) |
Радиоинженер
Регистрация: 25.09.2012
Адрес: г.Дзержинск Нижегородской обл.
Сообщений: 25,300
Записей в дневнике: 7
Сказал(а) спасибо: 292
Поблагодарили 219 раз(а) в 70 сообщениях
Репутация: 110185
|
Для этого надо просто понять алгоритм.
Суть его в том, что сравниваются два соседних элемента массива и переставляются между собой в случае выполнения заданного условия сортировки. Т.о. "бегать" приходится по всему массиву столько раз, сколько необходимо для "всплытия" каждого пузырька. В Вашем примере кол-во проходов выбрано более оптимально. Вывод: метод не оптимальный, но простой для понимания и достаточно легко реализуется на любом языке программирования. P.s. Упс! Игоревич уже меня опередил... Последний раз редактировалось Николай_С; 25.02.2017 в 15:50 |
14.03.2017, 23:41 | #4 (permalink) |
Member
Регистрация: 11.12.2016
Сообщений: 26
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
А зачем в цикле добавлять единицу? Вообще, мне не совсем понятно, за что отвечают переменные i и j ? Да и зачем нам делать двойной цикл, массив то одномерный ?
P.S. Да, да, вопросы тупые, я знаю, можно обойтись без упоминания моего IQ, но мне вообще ничего не понятно. Хотя суть с буфером обмена я понял, спасибо Vladimir S! |
15.03.2017, 01:08 | #5 (permalink) |
Banned
Регистрация: 06.03.2017
Сообщений: 788
Сказал(а) спасибо: 0
Поблагодарили 18 раз(а) в 4 сообщениях
Репутация: 5680
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
15.03.2017, 09:26 | #6 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
А Вы разберитесь с понятием "цикл" в программировании, причем вне зависимости от языка. Глядишь - и понятно станет. Переписывать же сюда страницы учебников и обучающих сайтов смысла не вижу.
Это что, троллинг такой? Зачем меня цитировать? |
15.03.2017, 21:44 | #7 (permalink) | |
Member
Регистрация: 11.12.2016
Сообщений: 26
Сказал(а) спасибо: 1
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 10
|
Цитата:
P.S. Не увидел сразу вашу цитату, простите |
|
16.03.2017, 10:18 | #8 (permalink) |
Специалист
Регистрация: 27.08.2008
Адрес: Санкт-Петербург
Сообщений: 27,807
Сказал(а) спасибо: 340
Поблагодарили 583 раз(а) в 208 сообщениях
Репутация: 113184
|
|
Ads | |
Member
Регистрация: 31.10.2006
Сообщений: 40200
Записей в дневнике: 0
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Репутация: 55070
|
|
|