Array Bsearch
Funkcja wyszukuje określonej wartości w tablicy. Jeżeli element o podanej wartości nie istnieje w tablicy, funkcja zwraca wskaźnik najbliższej wartości, najmniejszych elementów, między którymi znajduje się wartość poszukiwana. Funkcja ta nie może być używana do tablic ciągów i tablic serii (z wyjątkiem tablicy serii bar open time).
Uwaga! Funkcja przeszukuje binarnie tylko posortowane tablice. Do sortowania tablic numerycznych wykorzystania funkcję ArraySort().
Składnia
|
int ArrayBsearch( double array[], double value, int count=WHOLE_ARRAY, int start=0, int direction=MODE_ASCEND) Parametry: array[] – tablica która będzie przeszukiwana value – wartość która ma zostać znaleziona w tablicy count – ilość elementów które maja zostać przeszukane w tablicy (WHOLE_ARRAY - domyślnie wszystkie) start – indeks pierwszego elementu od którego nastąpi przeszukiwanie direction – kierunek przeszukiwania MODE_ASCEND – od najmniejszego do największego, MODE_DESCEND – od największego do najmniejszego Wartość zwracana: Indeks wyszukanej wartości, lub wartości najbliższej wyszukiwanej |
Przykład:
|
datetime tablica_czas[]; int shift = 10, przesuniecie_dzien; ArrayCopySeries(tablica_czas,MODE_TIME,Symbol(),PERIOD_D1); { daytimes, MODE_TIME Symbol(), PERIOD_D1) if ( Time[dhift] >= tablica_czas[0] ) przesuniecie_dzien = 0; else ( przesuniecie_dzien = ArrayBsearch(tablica_czas, Time[shift], WHOLE_ARRAY, 0, MODE_DESCEND) if( Period() < PERIOD_D1 ) przesuniecie_dzien++; } Print(TimeToStr(Time[shift]), "odpowiada" , przesuniecie_dzien, "Czas na świeczce" TimeToStr(tablica_czas[przesuniecie_dzien]));
|