代码之家  ›  专栏  ›  技术社区  ›  hummingBird

对于二进制搜索,下列数组是否定义良好?

  •  1
  • hummingBird  · 技术社区  · 14 年前

    我有一个文件 内景;内景

    while( ! feof($f) ) {
        $line = fgets( $f, 32 );
        $tmp = explode( ";", $line );
        $elements[] = array( $tmp[0] => $tmp[1] );
    }
    

    我打算使用这个数组基于键$tmp[0]进行二进制搜索。数组将有1000个元素,但搜索将应用于10个不同的值。我应该简单地定义一个2x1000矩阵并将元素加载到其中吗?

    谢谢

    1 回复  |  直到 14 年前
        1
  •  2
  •   Community CDub    7 年前

    你可以用 file 将文件的全部内容作为行数组获取。假设每对中的第一个int是唯一的,可以将其用作数组的键:

    foreach (file('ints.txt') as $line) {
      list($key, $value) = explode(';', $line);
      $elements[$key] = $value;
    }
    

    按键查找值 $elements O(n) but really close to O(1) ;对于您的目的来说,这可能足够快了。