23:30 14.08.2013
php: алгоритм быстрого поиска в массиве Задача:
Есть одномерный массив в 1100 элементов. Нужно определить, есть-ли в нем
элемент со значением X.
Первое что приходит на ум:
1
2
3
4
5
6
7
8
if (in_array('X', $d))
{
$res1 = true;
}
else
{
$res1 = false;
}
И это правильное решение. Но не оптимальное. Время выполнения данного куска кода 6.0081481.
Вот более приемлемый вариант, который работает в разы быстрее:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
function fast_srch($theArray, $searchElement)
{
if (!is_array($searchElement))
{
$e = array($searchElement);
} else {
$e = $searchElement;
}
$a1 = array_merge($theArray, $e);
$a2 = array_diff($a1, $theArray);
if (count($a2))
{
return false;
} else {
return true;
}
}
$res = fast_srch($d, 'X');
И время выполнения - 0.0011916!!!
read more at
Записная книжка web-разработчика rss2lj