二分法在循环有序数组查找元素
程序员文章站
2024-03-17 14:43:22
...
//在 O(logN) 时间内,从循环有序数组里查找元素
//二分之后,总有一半是有序数组
public static int searchInLoopSortedArray(int[] nums, int target) {
if(nums.length == 0) return -1;
int low = 0;
int high = nums.length - 1;
while (low <= high) {
int mid = low + ((high - low) >> 1);
if(nums[mid] == target) return mid;
if(nums[low] <= nums[mid]) {
if(nums[mid] > target && nums[low] <= target) {
high = mid - 1;
} else {
low = mid + 1;
}
} else if(nums[low] > nums[mid]) {
if(nums[mid] < target && nums[high] >= target) {
low = mid + 1;
} else {
high = mid - 1;
}
}
}
return -1;
}
推荐阅读
-
二分法在循环有序数组查找元素
-
在一个有序数组中查找具体的某个数字n(折半查找法)
-
C语言在整型有序数组中查找想要的数字。(折半查找法)
-
二分法查找有序数组中大于等于v的第一个数
-
在一个有序(增序)数组中查找具体的某个数字n 与二分法查找算法
-
二分法查找有序数组中某元素个数
-
C在一段有序数组中判断一个数是否在这个数组中(二分查找)
-
C++将一个有序数组按顺序移动,在移动后的数组中查找一个数字
-
LeetCode 34. 在排序数组中查找元素的第一个和最后一个位置 Find First and Last Position of Element in Sorted Array
-
请问一下PHP怎样在二维数组查找匹配字符串元素效率比较高