为什么我的二分查找不能搜索两位数的数字?

问题描述 投票:0回答:1

我的二分查找仅适用于单个数字。我正在尝试运行一个非常简单的 React 程序来可视化二分搜索,但目前基本搜索不起作用。以下是该代码的所有重要部分。

function binarySearch(arr, val) {
    let start = 0;
    let end = arr.length - 1;
  
    while (start <= end) {
      let mid = Math.floor((start + end) / 2);
  
      if (arr[mid] === val) {
        return mid;
      }
  
      if (val < arr[mid]) {
        end = mid - 1;
      } else {
        start = mid + 1;
      }
    }
    return -1;
  }
 

export const BinarySearch = () => {
    const [outputArea, setOutputArea] = useState('');


    const runSearch = (arr, x) => {
        const searched = binarySearch(arr, x);
        setOutputArea(searched + 1);
    }
    


    return (

        <div>
            Enter List: <input type="text"
                        id="listEntry" />
            Enter Number: <input type="text"
                        id="numberEntry" />

            <button type="button"
            onClick={(e) => runSearch(document.getElementById("listEntry").value.split(","), document.getElementById("numberEntry").value)}
            ></button>

            <textarea name="output"  cols="30" rows="10" value={outputArea}></textarea>



        </div>

    );

我尝试查看不同版本的搜索,但没有可用的选项有效。只要目标数字是单个数字,数组的长度并不重要。

function binarySearch(arr, val) {
  let start = 0;
  let end = arr.length - 1;

  while (start <= end) {
    let mid = Math.floor((start + end) / 2);

    if (arr[mid] === val) {
      return mid;
    }

    if (val < arr[mid]) {
      end = mid - 1;
    } else {
      start = mid + 1;
    }
  }
  return -1;
}

const runSearch = (arr, x) => {
  return binarySearch(arr, x);
  setOutputArea(searched + 1);
}
<div>
  Enter List: <input type="text" id="listEntry" /> Enter Number: <input type="text" id="numberEntry" />

  <button type="button" onclick="document.getElementById('output').value = runSearch( document.getElementById('listEntry').value.split(','), document.getElementById('numberEntry').value)">Search</button>

  <textarea id="output" name="output" cols="30" rows="10"></textarea>


</div>

javascript reactjs binary binary-search
1个回答
0
投票

用户输入类型是字符串,您是否尝试将输入解析为整数?

© www.soinside.com 2019 - 2024. All rights reserved.