« Предыдущий пост | На главную страницу | Следующий пост »

Исходный код функции сортировки методом пузырька

В прошлом выпуске я рассказал о сортировке методом пузырька. В этом выпуске я приведу исходный код функции, которая сортирует массив таким методом.

//+---------------------------------------------------------------------------------------------------+
//| Функция Sort() - сортирует массив методом пузырька                      |
//|                                                                                                   |
//| Возвращает true, если не было ошибки, и false, если ошибка была  |
//|                                                                                                   |
//| Параметры:                                                                                 |
//|   array        - имя массива                                                             |
//|   is_asc_order - если true, то сортируется по возрастанию; если      |
//|                  false, то по убыванию                                                  |
//+--------------------------------------------------------------------------------------------------+
bool Sort(string array, bool is_asc_order)
  {
    // Залокируем критическую секцию
    string critical_section = array+"Lock";
    if (Lock(critical_section)!=0) return(false); 
// Количество элементов массива хранится в переменной с именем, // равным имя массива + "Count" string gv_count; gv_count = array+"Count";
int count, err;
// Если глобальная переменная не существует, то элементов нет if (!GlobalVariableCheck(gv_count)) { err = GetLastError(); if (err!=0) { // Разлокировать критическую секцию Unlock(critical_section);
// Вывести сообщение об ошибке и выйти Print("Sort()->GlobalVariableCheck(): ошибка ", err); return(false); } else count = 0; } else // переменная существует, получим количество элементов count = GlobalVariableGet(gv_count);
int i, up_idx;
for (up_idx=count; up_idx>1; up_idx--) { // обработаем участок массива 1..up_idx for (i=1; i<up_idx; i++) { // m1 - элемент i // m2 - элемент i+1 double m1 = GlobalVariableGet(array+DoubleToStr(i, 0)); double m2 = GlobalVariableGet(array+DoubleToStr(i+1, 0));
bool is_sorted; // если true, то не надо переставлять элементы is_sorted = true;
if (is_asc_order) { // сортируем по возрастанию if (m1>m2) is_sorted = false; } else { // сортируем по убыванию if (m1<m2) is_sorted = false; }
// переставим элементы местами if (is_sorted) continue; if (GlobalVariableSet(array+DoubleToStr(i, 0),m2)==0) { // произошла ошибка при изменении элемента
// Разлокировать критическую секцию Unlock(critical_section);
// Вывести сообщение об ошибке и выйти Print("Sort()->GlobalVariableSet(): ошибка ", GetLastError()); return(false); } if (GlobalVariableSet(array+DoubleToStr(i+1, 0),m1)==0) { // произошла ошибка при изменении элемента
// Разлокировать критическую секцию Unlock(critical_section);
// Вывести сообщение об ошибке и выйти Print("Sort()->GlobalVariableSet(): ошибка ", GetLastError()); return(false); } } } // Разлокировать критическую секцию Unlock(critical_section);
return(true); }

В следующем выпуске я покажу на примере, как работает эта функция.



Все статьи по теме "Пишем советников для MetaTrader 4".

« Предыдущий пост | На главную страницу | Следующий пост »

Подписаться на мою рассылку



Размещение статьи "Исходный код функции сортировки методом пузырька" на Вашем сайте

Размещение статьи "Исходный код функции сортировки методом пузырька" на Вашем сайте возможно при условии выполнениия следующих условий:

  • Запрещается изменение оригинального текста без согласия автора - Андрея Ведихина.
  • Должен быть указан первоисточник. В случае публикации в интернете Вы должны разместить следующий код гиперссылки без изменений:
  • Запрещается коммерческое использование материалов, взятых с блога "Интернет-трейдинг на форекс / forex". Доступ к ним должен быть свободным, без взимания какой-либо платы, без обязательной регистрации и/или заполнения опросного листа (анкеты) и т.д.

В случае выполнения данных условий не требуется согласия автора блога "Интернет-трейдинг на форекс / forex" на размещение статьи "Исходный код функции сортировки методом пузырька" на Вашем сайте.

Журнал FOREX MAGAZINE:



Архив номеров FOREX MAGAZINE
Котировки Forex:

Счетчики:

Авторские права © 2005-2006 Андрей Ведихин

Условия использования материалов блога "Интернет-трейдинг на форекс / forex"

Контакты с автором:


Движок сайта:
Movable Type 5.04