Сортировка методом пузырька
В прошлых выпусках я начал рассмотрение способа реализации глобальных массивов и рассказал о функциях Count(), AddItem(), SearchItem(), GetItem() и DeleteItem().
В этом выпуске я расскажу о том, как можно отсортировать глобальный массив по возрастанию или убыванию. Один из наиболее простых в реализации, но медленных по скорости методов сортировки - метод пузырька.
Основная идея сортировки (например, по возрастанию) методом пузырька очень простая. Предположим, что у нас N элементов в массиве и индекс каждого элемента лежит в промежутке от 1 до N.
Первый шаг сортировки методом пузырька
- Сравниваем первый и второй элементы массива. Если первый элемент больше, чем второй, то меняем их местами.
- Сравниваем второй и третий элементы массива. Если второй элемент больше, чем третий, то меняем их местами.
- ...
- Cравниваем предпоследний (N-1) и последний (N) элементы массива. Если предпоследний элемент больше, чем последний, то меняем их местами.
В результате самым последним элементом в массиве у нас окажется самый большой элемент.
Повторяем вышеуказанные действия для части массива, начиная с 1 позиции до N-1 (шаг 2).
Второй шаг сортировки методом пузырька
- Сравниваем первый и второй элементы массива. Если первый элемент больше, чем второй, то меняем их местами.
- Сравниваем второй и третий элементы массива. Если второй элемент больше, чем третий, то меняем их местами.
- ...
- Cравниваем элемент N-2 и элемент N-1 массива. Если (N-2)-й элемент больше, чем элемент N-1, то меняем их местами.
В результате предпоследний элемент в массиве у нас тоже будет на своем, "отсортированном" месте.
Последующие шаги сортировки методом пузырька
Повторяем вышеуказанные действия для части массива, начиная с 1 позиции до N-2 (шаг 3), а потом для диапазона 1..N-3 и так далее до диапазона 1..2.
После завершения последнего шага наш массив будет отсортирован по возрастанию.
В следующем выпуске я приведу исходный код функции Sort(), которая сортирует глобальный массив, переданный ей в качестве параметра.
Все статьи по теме "Пишем советников для MetaTrader 4".
- Механическая торговая система - миф или реальность?
- С чего начать при написании советника:
- Создаем нового советника - Настраиваем параметры. - Язык MetaQuotes Language 4: