网站建设存在的问题及对策,seo优化包括,自己创建平台要多少钱,会展展厅设计二分查找法#xff08;Binary Search#xff09;是一种高效的查找算法#xff0c;通常用于在已排序的数组或列表中查找特定的目标值。这个算法的基本思想是不断将查找范围缩小为原来的一半#xff0c;直到找到目标值或确定目标值不存在。
二分查找是一种在每次比较之后将查…二分查找法Binary Search是一种高效的查找算法通常用于在已排序的数组或列表中查找特定的目标值。这个算法的基本思想是不断将查找范围缩小为原来的一半直到找到目标值或确定目标值不存在。
二分查找是一种在每次比较之后将查找空间一分为二的算法。每次需要查找集合中的索引或元素时都应该考虑二分查找。如果集合是无序的我们可以总是在应用二分查找之前先对其进行排序。
二分查找一般由三个主要部分组成 1.预处理一如果集合未排序则进行排序. 2.二分查找一 使用循环或递归在每次比较后将查找空间划分为两半 3. 后处理在剩余空间中确定可行的候选者
1.二分查找函数 是二分查找的最基础和最基本的形式。这是一个标准的二分查找模板
int binarySearch(const std::vectorint arr, int target) {int left 0;int right arr.size() - 1;while (left right) {int mid left (right - left) / 2;if (arr[mid] target) {return mid; // 找到目标值返回其索引}else if (arr[mid] target) {left mid 1; // 目标值在右半部分}else {right mid - 1; // 目标值在左半部分}}return -1; // 目标值不存在
}2.二分查找函数 是二分查找的高级模板。它用于查找需要访问数组中当前索引及其直接右邻居索引的元素或条件。
int binarySearch(vectorint nums, int target) {if (nums.size() 0)return -1;int left 0, right nums.size();while (left right) {// Prevent (left right) overflowint mid left (right - left) / 2;if (nums[mid] target){ return mid;}else if (nums[mid] target) { left mid 1; }else { right mid; }}// Post-processing:// End Condition: left rightif (left ! nums.size() nums[left] target) return left;return -1;
}3.二分查找函数 是二分查找的另一种独特形式。 它用于搜索需要访问当前索引及其在数组中的直接左右邻居索引的元素或条件。
int binarySearch3(vectorint nums, int target) {if (nums.size() 0)return -1;int left 0, right nums.size() - 1;while (left 1 right) {// Prevent (left right) overflowint mid left (right - left) / 2;if (nums[mid] target) {return mid;}else if (nums[mid] target){left mid;}else{right mid;}}// Post-processing:// End Condition: left 1 rightif (nums[left] target)return left;if (nums[right] target)return right;return -1;
}