Binary Search 二元搜尋找到特定的答案
Binary Search 二元搜尋找到特定的答案
Categories:
一般二元搜尋,找到特定的答案,不存在回傳 false
程式範例
JavaScript
function BinarySearch(searchNumberArray, searchNumber) {
// 左側指標
var leftNumberPointer = 0;
// 右側指標
var rightNumberPointer = searchNumberArray.length - 1;
while (leftNumberPointer <= rightNumberPointer) {
// 中間指標
var middleNumberPointer = Math.floor((rightNumberPointer + leftNumberPointer) / 2);
// 中間指標數字
var middleNumber = searchNumberArray[middleNumberPointer];
if (searchNumber == middleNumber) {
// 如果「要找的數字」與「中間指標數字」相同
// 找到了,回傳這個數字指標位置
return middleNumberPointer;
}
else if (searchNumber < middleNumber) {
// 如果「要找的數字」小於「中間指標數字」
// 表示「中間指標」右邊的所有數字都"大於"「要找的數字」
// 所以將「右側指標」移動到目前「中間指標 - 1」的位置
rightNumberPointer = middleNumberPointer - 1;
}
else {
// 如果「要找的數字」大於「中間指標數字」
// 表示「中間指標」左邊的所有數字都"小於"「要找的數字」
// 所以將「左側指標」移動到目前「中間指標 + 1」的位置
leftNumberPointer = middleNumberPointer + 1;
}
}
// 如果都沒有找到,回傳 false
return false;
}
TypeScript
function BinarySearch(searchNumberArray: number[], searchNumber: number){
// 左側指標
let leftNumberPointer: number = 0;
// 右側指標
let rightNumberPointer: number = searchNumberArray.length - 1;
while (leftNumberPointer <= rightNumberPointer) {
// 中間指標
let middleNumberPointer = Math.floor((rightNumberPointer + leftNumberPointer) / 2);
// 中間指標數字
let middleNumber = searchNumberArray[middleNumberPointer];
if (searchNumber == middleNumber) {
// 如果「要找的數字」與「中間指標數字」相同
// 找到了,回傳這個數字指標位置
return middleNumberPointer;
} else if (searchNumber < middleNumber) {
// 如果「要找的數字」小於「中間指標數字」
// 表示「中間指標」右邊的所有數字都"大於"「要找的數字」
// 所以將「右側指標」移動到目前「中間指標 - 1」的位置
rightNumberPointer = middleNumberPointer - 1;
} else {
// 如果「要找的數字」大於「中間指標數字」
// 表示「中間指標」左邊的所有數字都"小於"「要找的數字」
// 所以將「左側指標」移動到目前「中間指標 + 1」的位置
leftNumberPointer = middleNumberPointer + 1;
}
}
// 如果都沒有找到,回傳 false
return false;
}