当前位置: 首页> 文旅> 旅游 > seo营销怎么做_潜江资讯网招聘_搭建网站的五大步骤_百度搜索量排名

seo营销怎么做_潜江资讯网招聘_搭建网站的五大步骤_百度搜索量排名

时间:2025/7/13 2:49:02来源:https://blog.csdn.net/2301_80093604/article/details/146293685 浏览次数:0次
seo营销怎么做_潜江资讯网招聘_搭建网站的五大步骤_百度搜索量排名

lower_boundupper_boundlast_less_equal。它们的作用是在 有序数组 中查找目标值的位置。下面是对每个函数的详细解释:


1. lower_bound 函数

功能:

在有序数组 a 中查找第一个 大于或等于 target 的元素的位置。

参数:
  • a[]:有序数组。
  • n:数组的长度。
  • target:目标值。
实现逻辑:
  1. 初始化左边界 l = 0,右边界 r = n - 1
  2. 使用二分查找:
    • 计算中间位置 mid = l + (r - l) / 2
    • 如果 a[mid] >= target,说明目标值在左半部分,更新右边界 r = mid
    • 否则,目标值在右半部分,更新左边界 l = mid + 1
  3. 最终返回 l,即第一个大于或等于 target 的位置。
示例:
int a[] = {1, 3, 5, 7, 9};
int n = 5;
int target = 5;
int pos = lower_bound(a, n, target); // 返回 2

2. upper_bound 函数

功能:

在有序数组 a 中查找第一个 大于 target 的元素的位置。

参数:
  • a[]:有序数组。
  • n:数组的长度。
  • target:目标值。
实现逻辑:
  1. 初始化左边界 l = 0,右边界 r = n - 1
  2. 使用二分查找:
    • 计算中间位置 mid = l + (r - l) / 2
    • 如果 a[mid] > target,说明目标值在左半部分,更新右边界 r = mid
    • 否则,目标值在右半部分,更新左边界 l = mid + 1
  3. 最终返回 l,即第一个大于 target 的位置。
示例:
int a[] = {1, 3, 5, 7, 9};
int n = 5;
int target = 5;
int pos = upper_bound(a, n, target); // 返回 3

3. last_less_equal 函数

功能:

在有序数组 a 中查找最后一个 小于或等于 target 的元素的位置。

参数:
  • a[]:有序数组。
  • n:数组的长度。
  • target:目标值。
实现逻辑:
  1. 调用 upper_bound 函数,找到第一个大于 target 的位置。
  2. 返回 upper_bound(a, n, target) - 1,即最后一个小于或等于 target 的位置。
示例:
int a[] = {1, 3, 5, 7, 9};
int n = 5;
int target = 5;
int pos = last_less_equal(a, n, target); // 返回 2

4. 总结

  • lower_bound:查找第一个 大于或等于 target 的位置。
  • upper_bound:查找第一个 大于 target 的位置。
  • last_less_equal:查找最后一个 小于或等于 target 的位置。

这些函数在有序数组中非常有用,常用于解决 查找问题范围查询问题


5. 完整代码

#include <iostream>
using namespace std;int lower_bound(int a[], int n, int target) {int l = 0, r = n - 1;while (l < r) {int mid = l + (r - l) / 2;if (a[mid] >= target) r = mid;else l = mid + 1;}return l;
}int upper_bound(int a[], int n, int target) {int l = 0, r = n - 1;while (l < r) {int mid = l + (r - l) / 2;if (a[mid] > target) r = mid;else l = mid + 1;}return l;
}int last_less_equal(int a[], int n, int target) {return upper_bound(a, n, target) - 1;
}int main() {int a[] = {1, 3, 5, 7, 9};int n = 5;int target = 5;cout << "lower_bound: " << lower_bound(a, n, target) << endl; // 输出 2cout << "upper_bound: " << upper_bound(a, n, target) << endl; // 输出 3cout << "last_less_equal: " << last_less_equal(a, n, target) << endl; // 输出 2return 0;
}

6. 适用场景

  • 查找问题:在有序数组中查找目标值的位置。
  • 范围查询:查找满足某个条件的元素范围。
  • 插入位置:确定目标值在有序数组中的插入位置。

这些函数是二分查找的经典应用,理解它们有助于解决许多算法问题。

关键字:seo营销怎么做_潜江资讯网招聘_搭建网站的五大步骤_百度搜索量排名

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

责任编辑: