Mrkni se na poslední parametr (který jsi explicitně nezadal).
Pokud je testována přesná shoda match(..;..;0) hledání skutečně sekvenčně prochází zadanou oblastí a na první nalezené shodě se zastaví.
Pokud je zadána přibližná shoda, funkce používá rychlejší způsob hledání.
V případě chybějícího parametru nebo 1 funkce předpokládá vzestupně setříděný seznam a používá variantu binárního hledání. Tj. funkce vybere hodnotu uprostřed prohledávané oblasti, když je tato hodnota menší než hledaná, rozpůlí oblast mezi vybraným a posledním prvkem, podívá se co je uprostřed, ...
V tomto režimu, pokud je prohledávaný seznam podle očekávání setříděný, najde poslední hodnotu, která je menší nebo rovna hledané hodnotě. Pokud seznam setříděný není, nemusí funkce hodnotu ani najít, i když v seznamu je. Prostě funkce neporovnává všechny hodnoty - přeskakuje. Za to je ale pro rozsáhlé seznamy cca 10000x rychlejší než sekvenční hledání (s parametrem 0).
Z toho by mělo být mj. jasné, že seznam musí být setříděný celý, ne jen začátek.
Editoval lp. (30. 11. 2013 01:33:50)