Heim Backend-Entwicklung PHP-Tutorial php二分查找二种实现示例_PHP

php二分查找二种实现示例_PHP

Jun 01, 2016 am 11:55 AM
二分查找

php二分查找示例

二分查找常用写法有递归和非递归,在寻找中值的时候,可以用插值法代替求中值法。
当有序数组中的数据均匀递增时,采用插值方法可以将算法复杂度从中值法的lgN减小到lglgN

复制代码 代码如下:
/**
 * 二分查找递归解法
 * @param type $subject
 * @param type $start
 * @param type $end
 * @param type $key
 * @return boolean
 */
function binarySearch_r($subject, $start, $end, $key)
{

 if ( $start >= $end ) return FALSE;
 $mid = getMidKey($subject, $start, $end, $key);
 if ( $subject[$mid] == $key ) return $mid;
 if ( $key > $subject[$mid] ) {
  return binarySearch($subject, $mid, $end, $key);
 }
 if ( $key   return binarySearch($subject, $start, $mid, $key);
 }
}

/**
 * 二分查找的非递归算法
 * @param type $subject
 * @param type $n
 * @param type $key
 */
function binarySearch_nr($subject, $n, $key)
{
 $low = 0;
 $high = $n;
 while ( $low   $mid = getMidKey($subject, $low, $high, $key);
  if ( $subject[$mid] == $key ) return $mid;
  if ( $subject[$mid]    $low = $mid + 1;
  }
  if ( $subject[$mid] > $key ) {
   $high = $mid - 1;
  }
 }
}
function getMidKey($subject, $low, $high, $key)
{
 /**
  * 取中值算法1 取中值 不用 ($low+$high)/2的方式是因为 防止low和high较大时候,产生溢出....
  */
 //return round($low + ($high - $low) / 2);

 /**
  * 经过改进的插值算法求中值,当数值分布均匀情况下,再降低算法复杂度到lglgN
  * 取中值算法2
  */
 return round( (($key - $subject[$low]) / ($subject[$high] - $subject[$low])*($high-$low) ) );
}

Erklärung dieser Website
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn

Heiße Artikel -Tags

Notepad++7.3.1

Notepad++7.3.1

Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version

SublimeText3 chinesische Version

Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1

Senden Sie Studio 13.0.1

Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6

Dreamweaver CS6

Visuelle Webentwicklungstools

SublimeText3 Mac-Version

SublimeText3 Mac-Version

Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

So schreiben Sie einen binären Suchalgorithmus mit C# So schreiben Sie einen binären Suchalgorithmus mit C# Sep 19, 2023 pm 12:42 PM

So schreiben Sie einen binären Suchalgorithmus mit C#

In C-Sprache geschriebenes binäres Suchprogramm, das pthread für die Multithread-Verarbeitung verwendet In C-Sprache geschriebenes binäres Suchprogramm, das pthread für die Multithread-Verarbeitung verwendet Aug 26, 2023 pm 12:45 PM

In C-Sprache geschriebenes binäres Suchprogramm, das pthread für die Multithread-Verarbeitung verwendet

So implementieren Sie einen binären Suchalgorithmus mit Java So implementieren Sie einen binären Suchalgorithmus mit Java Sep 19, 2023 pm 12:57 PM

So implementieren Sie einen binären Suchalgorithmus mit Java

Wie implementiert man einen binären Suchalgorithmus mit Python? Wie implementiert man einen binären Suchalgorithmus mit Python? Sep 20, 2023 pm 01:24 PM

Wie implementiert man einen binären Suchalgorithmus mit Python?

Wie finde ich das kleinste Element in einem Array mithilfe des binären Suchalgorithmus in C-Sprache? Wie finde ich das kleinste Element in einem Array mithilfe des binären Suchalgorithmus in C-Sprache? Aug 25, 2023 pm 08:37 PM

Wie finde ich das kleinste Element in einem Array mithilfe des binären Suchalgorithmus in C-Sprache?

Java-Programm zum Finden der Kubikwurzel einer Zahl mithilfe eines binären Suchalgorithmus Java-Programm zum Finden der Kubikwurzel einer Zahl mithilfe eines binären Suchalgorithmus Aug 28, 2023 pm 01:33 PM

Java-Programm zum Finden der Kubikwurzel einer Zahl mithilfe eines binären Suchalgorithmus

Verwenden Sie in einem C-Programm den binären Suchalgorithmus, um rationale Zahlen zu suchen, ohne Gleitkomma-Arithmetik zu verwenden Verwenden Sie in einem C-Programm den binären Suchalgorithmus, um rationale Zahlen zu suchen, ohne Gleitkomma-Arithmetik zu verwenden Aug 27, 2023 pm 06:05 PM

Verwenden Sie in einem C-Programm den binären Suchalgorithmus, um rationale Zahlen zu suchen, ohne Gleitkomma-Arithmetik zu verwenden

Analyse des PHP-Algorithmus: Wie verwende ich den binären Suchalgorithmus, um Elemente in einem geordneten Array schnell zu finden? Analyse des PHP-Algorithmus: Wie verwende ich den binären Suchalgorithmus, um Elemente in einem geordneten Array schnell zu finden? Sep 19, 2023 pm 01:14 PM

Analyse des PHP-Algorithmus: Wie verwende ich den binären Suchalgorithmus, um Elemente in einem geordneten Array schnell zu finden?

See all articles