Funkcje tablicowe:   ArraySort()

Funkcja bool ArraySort() sortuje liczbowe wartości elementów tablicy w pierwszym wymiarze. Można posortować tak, że najmniejsza wartość zostanie przypisana elementowi z indeksem 0, a najwyższa ostatniemu elementowi (sortowanie rosnące) lub odwrotnie (sortowanie malejące). Funkcja zwraca true jeśli operacja się powiodła lub false jeśli nie. Funkcja nie może być stosowana w tablicach typu string . Więcej informacji można znaleźć w specyfikacji MQL4.


Przykład 1

Przykład skryptu, gdzie wartości elementów statycznej tablicy najpierw posortowano od najmniejszej do największej MODE_ASCEND, a następnie od największej do najmniejszej MODE_DESCEND.

#property strict
void OnStart()
  {
//---
   int array[]   = {4, 1, 6, 3, 9}; // tablica statyczna
   int count     = WHOLE_ARRAY;     // cała tablica, wartość domyślna
   int startPos  = 0;               // indeks elementu początkowego, wartość domyślna
   int direction = MODE_ASCEND;     // MODE_ASCEND - rosnąco, wartość domyślna
                                    // MODE_DESCEND - malejąco

//--- wyświetlić elementy tablicy przed sortowaniem
   Print("1) Tablica przed sortowaniem:");
   Print("array[0] = ",  array[0],
         ", array[1] = ",array[1],
         ", array[2] = ",array[2],
         ", array[3] = ",array[3],
         ", array[4] = ",array[4]);

//--- posortować elementy tablicy od najmniejszego do największego
   ArraySort(array, count, startPos, direction);

//--- wyświetlić elementy tablicy po sortowaniu rosnącym
   Print("2) Tablica po sortowaniu rosnącym (MODE_ASCEND):");
   Print("array[0] = ",  array[0],
         ", array[1] = ",array[1],
         ", array[2] = ",array[2],
         ", array[3] = ",array[3],
         ", array[4] = ",array[4]);

//--- posortować elementy tablicy od największego do najmniejszego
   ArraySort(array, WHOLE_ARRAY, 0, MODE_DESCEND);

//--- wyświetlić elementy tablicy po sortowaniu malejącym
   Print("3) Tablica po sortowaniu malejącym (MODE_DESCEND):");
   Print("array[0] = ",  array[0],
         ", array[1] = ",array[1],
         ", array[2] = ",array[2],
         ", array[3] = ",array[3],
         ", array[4] = ",array[4]);
  }

Rys. 1. Przykład stosowania funkcji ArraySort().


Przykład 2

Skrypt, gdzie w tablicy od elementu z indeksem 1, uwzględniając kolejne 4 elementy ich wartości są sortowane w sposób malejący MODE_DESCEND.

#property strict
void OnStart()
  {
//---
   int array[] = {4, 1, 6, 3, 9}; // tablica statyczna

//--- wyświetlić elementy tablicy przed sortowaniem
   Print("1) Tablica przed sortowaniem:");
   Print("array[0] = ",  array[0],
         ", array[1] = ",array[1],
         ", array[2] = ",array[2],
         ", array[3] = ",array[3],
         ", array[4] = ",array[4]);

//--- posortować elementy tablicy począwszy od elementu z indeksem 1,
//--- 4 kolejne elementy, sortowanie malejące
   ArraySort(array, 4, 1, MODE_DESCEND);

//--- wyświetlić elementy tablicy po sortowaniu
   Print("2) Tablica po sortowaniu malejącym od indeksu 1, 4 elementy:");
   Print("array[0] = ",  array[0],
         ", array[1] = ",array[1],
         ", array[2] = ",array[2],
         ", array[3] = ",array[3],
         ", array[4] = ",array[4]);
  }

Rys. 2. Przykład stosowania funkcji ArraySort().