|
Модераторы: Poseidon |
|
THandle |
|
||||||
Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Сортировка массива методом пузырька.
Алгоритм сортировки такой: Берутся два рядом стоящих элемента массива, и если элемент с меньшим индексом больше элемента с большим индексом, то они меняются местами. Эти действия происхдят до тех пор, пока массив не будет отсортирован. Алгоритм проходит по массиву от начала до конца. В процессе работы алгоритма находится элемент с максимальным значением, который помещается в конец массива, поэтому каждый раз количество просматриваемых сортировкой элементов массива уменьшается на 1. Каждый раз на своё место становится хотя бы один элемент массива, поэтому количество проходов по нему равно количеству элементов в массиве. Алгоритм называется пузырьковым, так как максимальный элемент массива как бы всплывает наверх. Пример на Паскале:
Пример на С++:
Пример на Visual Basic:
Авторы: THandle - идея, теория, пример на Pascal, пример на С++. Rrader - пример на С++, пример на VB. Пример сортировки на С# смотрите в конце темы. Это сообщение отредактировал(а) THandle - 7.5.2008, 19:58 |
||||||
|
|||||||
JackYF |
|
|||
полуавантюрист Профиль Группа: Участник Сообщений: 5814 Регистрация: 28.8.2004 Где: страна тысячи озё р Репутация: 2 Всего: 162 |
Мой вариант исходника на С++:
|
|||
|
||||
THandle |
|
|||
Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
JackYF, спасибо. +1.
|
|||
|
||||
inside_pointer |
|
|||
Опытный Профиль Группа: Участник Сообщений: 344 Регистрация: 9.3.2008 Репутация: нет Всего: 12 |
С инета
|
|||
|
||||
Rrader |
|
|||
Inspired =) Профиль Группа: Экс. модератор Сообщений: 1535 Регистрация: 7.5.2005 Репутация: 14 Всего: 191 |
Ещё мой вариант на C#:
Это сообщение отредактировал(а) Rrader - 7.5.2008, 19:39 |
|||
|
||||
THandle |
|
|||
Хранитель Клуба Награды: 1 Профиль Группа: Админ Сообщений: 3639 Регистрация: 31.7.2007 Где: Moscow, Dubai Репутация: 30 Всего: 372 |
Rrader,
Название темы поменял с: [FAQ][Pascal|C++|VB] Сортировка массива методом "пузырька" на: [FAQ][Pascal|C++|VB|C#] Сортировка массива методом "пузырька" Давайте еще киньте кто-нибудь на Яве. На ассемблере может быть напишу |
|||
|
||||
Ripper |
|
|||
Lonely soul... Профиль Группа: Участник Сообщений: 920 Регистрация: 30.6.2004 Где: г. Москва Репутация: 6 Всего: 23 |
В википедии там на многих языках написано уже все %)
-------------------- "Он знает: надо смеяться над тем, что тебя мучит, иначе не сохранишь равновесия, иначе мир сведет тебя с ума" - Над кукушкиным гнездом |
|||
|
||||
Stqs |
|
|||
Новичок Профиль Группа: Участник Сообщений: 23 Регистрация: 25.6.2007 Где: Kh Репутация: 1 Всего: 1 |
вот Java
Это сообщение отредактировал(а) Stqs - 6.7.2008, 16:50 |
|||
|
||||
Hades |
|
||||||||
Бывалый Профиль Группа: Участник Сообщений: 226 Регистрация: 8.8.2008 Репутация: 4 Всего: 37 |
Мой вариант исходника на Java:
Этот вариант всегда сравнивает элементы (1+2+3+...+Max-1) раз, когда Max = 5, количество сравнений элементов - 10(1+2+3+4) всегда. в моём варианте количества сравнений элементов, при Max = 5, только в худшем случаи будет 10, а в лучшем 4(когда массив уже отсортирован). Это сообщение отредактировал(а) Hades - 10.8.2008, 12:18 |
||||||||
|
|||||||||
iff |
|
|||
Администратор Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 3 Всего: 16 |
Компилятор TASM, для DOS, для Intel8086+. Сортировка массива однобайтных знаковых чисел по возрастанию.
Обратите внимание на инструкцию в строке 17. При использовании других инструкций условного перехода можно изменить принцип сортировки: JA - беззнаковые числа по убыванию JB - беззнаковые числа по возрастанию JG - знаковые числа по убыванию JL - знаковые числа по возрастанию Это сообщение отредактировал(а) iff - 5.11.2010, 20:53 -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
iff |
|
|||
Администратор Профиль Группа: Участник Сообщений: 949 Регистрация: 23.3.2007 Репутация: 3 Всего: 16 |
При сортировки масиива слов (длина элементов - 2 байта). Следует изменить строки:
в 4-ой - заменить $ - OFFSET Arr на ($ - OFFSET Arr) / 2 в 16-ой и в 18-ой - заменить [DI+1] на [DI+2] в 20-ой - добавить ещё одну инструкцию INC DI -------------------- DOS... Синей пеленой экран заполнил чистый DOS Мышь... Стала вдруг квадратной, потеряла форму мышь... Я разбил окно, девяностопятое мастдайное окно, И поставил DOS, и тогда увидел: Это счастье, — вот оно. |
|||
|
||||
igorrr37 |
|
|||
Новичок Профиль Группа: Участник Сообщений: 4 Регистрация: 17.12.2010 Репутация: нет Всего: нет |
>поэтому количество проходов по нему равно количеству элементов в массиве.
Если в массиве два элемента, по нему достаточно пройти один раз, если три-два раза, т.е. число проходов на единицу меньше числа элементов. |
|||
|
||||
feodorv |
|
|||
Эксперт Профиль Группа: Комодератор Сообщений: 2214 Регистрация: 30.7.2011 Репутация: нет Всего: 45 |
Здесь присутствует выход за пределы массива: когда i есть 0, а j становится MAX-1, имеем arr[MAX]. А вот здесь выхода за пределы массива нет))) -------------------- Напильник, велосипед, грабли и костыли - основные инструменты программиста... |
|||
|
||||
futamator |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 6.2.2017 Репутация: нет Всего: нет |
Благодарю за такую статейку. Весьма полезно для новичков и не только)
|
|||
|
||||
jangogo |
|
|||
Новичок Профиль Группа: Участник Сообщений: 11 Регистрация: 11.5.2017 Репутация: нет Всего: нет |
Спасибо, ребята! Большое дело делаете!)
Добавлено через 1 минуту и 45 секунд Спасибо, ребята! Большое дело делаете!) |
|||
|
||||
Правила форума "Центр помощи" | |
ВНИМАНИЕ! Прежде чем создавать темы, или писать сообщения в данный раздел, ознакомьтесь, пожалуйста, с Правилами форума и конкретно этого раздела.
Более подробно с правилами данного раздела Вы можете ознакомится в этой теме. Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Poseidon, Rodman |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Центр помощи | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |