Изменения

Перейти к: навигация, поиск

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

363 байта добавлено, 19:15, 1 июня 2012
Оптимизация
== Оптимизация ==
* Внутренний цикл можно выполнять для Можно заметить, что после <tex>j = 0, 1, ..., n - i - 1</tex>, где -ой итерации внешнего цикла <tex>i</tex> — номер итерации внешнего циклапоследних элементов уже находятся на своих местах в отсортированном порядке, поэтому нет необходимости производить их сравнения друг с другом. Следовательно, так как на внутренний цикл можно выполнять не до <tex>in - 2 </tex>-й итерации последние , а до <tex>n - i- 2 </tex> элементов массива уже будут правильно упорядочены.* Внешний Также заметим, что если после выполнения внутреннего цикла не произошло ни одного обмена, то массив уже отсортирован, и продолжать что-то делать бессмысленно. Поэтому внутренний цикл можно заменить на цикл вида: выполнять не <tex> n - 1 </tex> раз, а до тех пор, пока произведится хотя бы один обмен на очередной итерации внешнего цикла, продолжать выполнениево внутреннем цикле происходят обмены.И тогда псевдокод будет выглядеть такТогда сортировка примет такой вид: BubbleSort(A) i = 0; t := истинаtrue; '''цикл пока''' while t:== true t := ложьfalse; '''цикл для''' for j = 0, 1, ..., to n - i - 2: '''если''' if A[j] > A[j+1], '''то''': обменять местами элементы swap(A[j] и , A[j+1]); t := истинаtrue; i = i + 1;
== Пример работы алгоритма ==
403
правки

Навигация