本文最后更新于 2025年8月2日 晚上
参考:
https://juejin.cn/post/6844903955252805645 。
https://juejin.cn/post/6844903866610221064 。
查找和排序都是在程序设计中经常用到的算法。查找相对而言较为简单,排序比查找要复杂一些。
查找有顺序查找、二分查找、哈希表查找、二叉排序树查找等。
顺序查找
直接 for 循环顺序查找效率最高。
二分查找
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35
| var searchRange = function (nums, target) { let left = 0; let mid; let right = nums.length; while (left < right) { mid = (left + right) >>> 1; if (nums[mid] > target) { right = mid; } else if (nums[mid] < target) { left = mid + 1; } else if (nums[mid] == target) { right = mid; } } let leftIndex = -1, rightIndex = -1; if (left == nums.length) return [-1, -1]; else leftIndex = nums[left] == target ? left : -1;
left = 0; right = nums.length; while (left < right) { mid = (left + right) >>> 1; if (nums[mid] > target) { right = mid; } else if (nums[mid] < target) { left = mid + 1; } else if (nums[mid] == target) { left = mid + 1; } } if (left == 0) return [-1, -1]; else rightIndex = nums[left - 1] == target ? left - 1 : -1; return [leftIndex, rightIndex]; };
|