| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Для новичков > Сортировка массива. |
| Автор: Soeth 15.2.2012, 17:37 | ||
| Написал ф-ю сортировки массива методом Шейкера. Собственно проблема в том, что программа впадает в бесконечный цикл после того, как весь массив отсортирован, L и R не пересекаются. Может подскажете в чём проблема? S,P - количество сравнений\ перестановок. N - длина массива. L - левая граница, R - правая. L1,R1 - индикаторы последней перестановки с левой\правой сторон.
|
| Автор: feodorv 15.2.2012, 18:44 | ||
Ни фига не циклится:
Или дайте данные, на которых циклится... |
| Автор: Soeth 15.2.2012, 21:01 | ||
Проверял на различных случайных массивах различных структур, но как пример:
В бесконечный цикл while входит при L = 3 и R = 4. |
| Автор: feodorv 16.2.2012, 02:42 | ||
| Не понятно, согласно какому описанию алгоритма Вы составили программу... На каждом шаге должны меняться либо L, либо R (иначе - зацикливание). При отсортированном списке обменов не происходит, и L и R так и остаются отличающимися на 1. Как вариант решения:
|
| Автор: Soeth 16.2.2012, 10:08 |
| Составлял согласно тому, как препод в универе объяснял. Благодарю за помощь, булеанская переменная поможет. ) |