note 105955 modified in function.array-search by danbrown

From: Date: Tue, 27 Sep 2011 20:27:48 +0000
Subject: note 105955 modified in function.array-search by danbrown
References: 1  Groups: php.notes 
Request: Send a blank email to php-notes+get-183494@lists.php.net to get a copy of this message
Here is a version of binary search that is done via recursion instead of iteration. Remember that your data needs to be presorted! <?php static function Bin_Search(&$needle, &$haystack, $start, $end) { if($end < $start) { return false; } $mid = (int)(($end - $start) / 2) + $start; if($haystack[$mid] > $needle) { return Bin_Search($needle, $haystack, $start, $mid - 1); } else if($haystack[$mid] < $needle) { return Bin_Search($needle, $haystack, $mid + 1, $end); } else { return true; } } ?> --was-- Here is a version of binary search that is done via recursion instead of iteration. Remember that your data needs to be presorted! static function Bin_Search(&$needle, &$haystack, $start, $end) { if($end < $start) { return false; } $mid = (int)(($end - $start) / 2) + $start; if($haystack[$mid] > $needle) { return Bin_Search($needle, $haystack, $start, $mid - 1); } else if($haystack[$mid] < $needle) { return Bin_Search($needle, $haystack, $mid + 1, $end); } else { return true; } } http://php.net/manual/en/function.array-search.php

« previous php.notes (#183494) next »