发新话题
打印

求助:关于对分查找法

求助:关于对分查找法

<?
/*
定义一个函数
*/
function byName($left, $right)
{
  return(strcmp($left[0], $right[0]));
}
/*
** 创建数组:Name, Title, Wage
*/
$employee[] = array("tom, John", "Programmer", 20);
$employee[] = array("jas, John", "Programmer", 20);
$employee[] = array("june, John", "Programmer", 20);
$employee[] = array("aili, John", "Programmer", 20);
$employee[] = array("Doe, Jane", "Programmer", 20);
$employee[] = array("Mann, Joe", "Manager", 35);
$employee[] = array("Smith, John", "CEO", 50);
$employee[] = array("Leeds, Al", "President", 100);
/*
** 排序
*/
usort($employee, "byName");
/*
** 查找对象
*/
$Name = "Mann, Joe";
$lower_limit = 0;
$upper_limit = count($employee) - 1;
while($lower_limit < $upper_limit)
{
  /*
  ** 取得中间点
  */
  $index = intval(($lower_limit + $upper_limit)/2);

  if(strcmp($employee[$index][1], $Name) > 0)
  {
   /*
   ** 结果在上半部分
   */
   $lower_limit = $index + 1;
  }
  elseif(strcmp($employee[$index][1], $Name) < 0)
  {
   /*
   ** 结果在下半部分
   */
   $upper_limit = $index - 1;
  }
  else
  {
   /*
   ** 发现结果
  */
   $lower_limit = $index;
   $upper_limit = $index;
  }
}
/*
** 打印结果
*/
print("Mann, Joe 在数组中的位置:"." $index<BR>\n");
?>
关键之处有点疑问:if(strcmp($employee[$index][1], $Name) > 0)
问题1:index[1]是指数组里的第二个元素吧?
       2:如果大于0,得到什么结果呢?
希望高手指点,谢谢!

最好能解释一下意思。

[ 本帖最后由 qloog 于 2008-4-1 10:39 编辑 ]

TOP

复制内容到剪贴板
代码:

<?php

//这里大于0是说明$str1比$str2的小/少(less)

//就是一个判断这个表达式是否为真了。

if(strcmp($str1,$str2)<0)

{

   
//do sth.

}

?>

广告位招租。

TOP

字符串怎么判断小于啊,楼上的能讲一下吧

TOP

个人觉得应该是asc码判断字符吧,用ord()

TOP

1与2哪个大?
“1”与"2"哪个大?
呵呵。。。

TOP

发新话题