📅  最后修改于: 2023-12-03 15:41:09.820000             🧑  作者: Mango
本算法测验是SP2竞赛第一题,针对给定的升序数组进行查找操作。本题考察程序员的二分查找算法实现能力。
给定一个升序数组,查找指定的数,若存在返回下标,不存在返回-1。
因为数组已经是升序排列,可以采用二分查找算法进行查找。具体步骤如下:
int binarySearch(int[] nums, int target) {
int left = 0, right = nums.length - 1;
while (left <= right) {
int mid = left + (right - left) / 2;
if (nums[mid] == target) {
return mid;
} else if (nums[mid] < target) {
left = mid + 1;
} else {
right = mid - 1;
}
}
return -1;
}
时间复杂度:O(log n)
空间复杂度:O(1)
二分查找是一种高效的查找算法,但要求待查找数组必须是有序的,否则需要先排序。在实际应用中,二分查找更多地用于对数值型数据的查找,对于字符串等非数值型数据的查找,可以采用其他算法。