在排序数组中寻找上界的JavaScript程序
数组是一种线性数据结构,包含对象,并且在排序数组中,元素按增加的顺序存储。我们已经有了一个排序数组和一个整数x。我们要从给定的数组中打印整数x的上界。排序数组中x的上界是大于或等于x的最小元素,而下界是小于或等于x的最大成员。如果x的上界不存在于数组中,我们必须打印“x的上界不存在于数组中。”
假设我们有一个排序数组和一个整数x,如下所示:
输入
输出
说明
19或大于19有0个值存在于数组中,这就是为什么19的上界不存在,所以输出是9的上界不存在于数组中。
输入
输出
解释:因为我们知道x的上界是大于或等于x的最小元素,所以这里x是2,在数组中2不出现,并且大于2的唯一元素是3,因此输出是3。
解法
这里我们将讨论两个解法。请参阅下面的部分-
解法 1:通过线性搜索在排序数组中找到上界
这种方法的想法是,我们将查找与给定数字x相等或大于给定数字x的元素,通过从数组的开头遍历数组到所需位置或数组结尾来实现。
例子
时间复杂度:O(N),其中N是数组的大小。
空间复杂度:O(1),因为我们没有使用任何额外的空间。
解法 2:通过二分搜索在排序数组中找到上界
这种方法的想法是我们要遍历数组但不是整个数组。因为我们知道我们有一个排序数组,所以在这里我们应用二分搜索,将数组从中间分成两部分,并检查是否
例子
时间复杂度: O(log(N)),其中N是数组的长度。
空间复杂度: O(log(N)),因为我们使用了额外的空间。
结论
本教程中,我们实现了一个JavaScript程序,用于在给定的排序数组中找到给定数字的上限。给定数字的上限是指在给定数组中存在并且等于给定数字的数字,如果没有,则只是大于给定数字。如果给定数组中没有任何一个元素比给定数字更大,则不存在。我们实现了线性搜索和二分搜索算法。