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 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().
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().