Дилинговый центр Forex Euroclub • Программа для Forex | Форекс - TradingDesk Pro 5

Сортировка массива Содержание  Предыдущая  Следующая


Сортировка массива

 

Сортировка массива позволяет упорядочить входящие в него элементы по возрастанию или по убыванию. При данном методе сортировки самый большой или самый маленький элемент в массиве меняется местами с первым элементом массива. После этого следующий по размеру элемент меняется местами с вторым элементом в массиве и т.д. Процесс повторяется до полной сортировки массива. Покажем на примере создание индикатора, основанного на массиве, а также процесс сортировки массива по возрастанию. Код программы имеет вид:

 

{Индикатор AvgRange < 40}

Input: RngeLvl(40);

Vars: j(0), k(0), Mins(0), MinIdx(0), Temp(0);

Array: Rnge[50](0);

 

If Range < RngeLvl Then Begin

       j = j + 1;

       k = Mod(j, 50);

       Rnge[k] = Range;

       If j >= 50 Then Begin

               Value2 = 0;

               For k = 0 to 49 Begin

                       Value2 = Value2 + Rnge[k]

               End;

               Plot1(Value2/50, "Average Range");

       End;

End;

 

If LastBarOnChart Then Begin

       For k = 0 to 48 Begin

               Mins = Rnge[k];

               MinIdx = k;

               For j = k + 1 to 49 Begin

                       If Rnge[j] < Mins Then Begin

                               Mins = Rnge[j];

                               MinIdx = j;

                       End;

               End;

 

{Перемена мест элементов}

 

               If Mins < Rnge[k] Then Begin

                       Temp = Rnge[k];

                       Rnge[k] = Mins;

                       Rnge[MinIdx] = Temp;

               End;

       End;

End;

 

В данном виде два циклических оператора For используются для проведения сортировки. Внешний цикл выполняется 49 раз (на один меньше, чем количество элементов в массиве), поскольку переменная k меняет значения от 0 до 48. Значение элемента с номером k присваивается переменной Mins и становится элементом для обмена местами. Значение переменной k присваивается переменной MinIdx. Внутренний цикл будет выполняться для оставшихся в рассмотрении элементов. Для работы внутреннего цикла необходимо, чтобы значение переменной-счетчика j  было на 1 больше, чем значение переменной k, т.е. k+1. Когда будет найдено новое минимальное значение, то оно и его номер помещаются в переменные Mins и MinIdx. Когда завершается внутренний цикл, происходит перемена местами элементов при помощи переменной Temp. Текущее значение выбранного элемента массива (который имеет номер k) присваивается переменной Temp. Затем минимальное значение, помещенное в переменную Mins, присваивается выбранному элементу массива (с номером k). Затем значение, сохраненное в переменной Temp, присваивается освобожденному элементу массива (который имеет номер MinIdx).