我想在一個input透過陣列中使用二分搜尋,找到最相近的值,並在input變換成最相近的數值,該如何實現呢?假設陣列是 [ 4, 7, 8 ] 在input中輸入5 他會自動變成4.求助大神!//二分搜尋法Array.prototype.binary_search = function(low, high, khey) {if (low > high)return -1;var mid = parseInt((high + low) / 2);if (this[mid] > khey)return this.binary_search(low, mid - 1, khey);if (this[mid] < khey)return this.binary_search(mid + 1, high, khey);return mid;};
1 回答

手掌心
TA贡献1942条经验 获得超3个赞
用迭代比较简单,没使用递归。
Array.prototype.binary_search_clo = function(khey) { var low = 0; var high = this.length var mid = parseInt((high + low + 1) / 2); while (this[mid] != khey && low < high){ if (this[mid] > khey){ high = mid - 1; } else if (this[mid] < khey){ low = mid + 1; } mid = parseInt((high + low) / 2); } if (mid > 0 && Math.abs(parseInt(this[mid] - khey)) > Math.abs(parseInt(this[mid-1] - khey))){ mid = mid -1; } return mid; };
找到最后了, 要与旁边比较一下,哪个更接近。
添加回答
举报
0/150
提交
取消