代码以上传至github https://github.com/haiyoushei1/DataStructure
经过了五个月没有刷力扣,我已经变成了个沙口,为了应对实习,决定重头刷数据结构与算法的题。好的,那让我们开始吧。
目录:
一、数组的查找算法
对于常用的查找算法,就是顺序查找与二分查找,这里就不讲顺序查找了,太简单,时间复杂度为n。
二分查找:
/*
二分查找:
时间复杂度为 logn
算法思路:通过比较中间秩与目标数的大小,确定找到并执行返回对应秩,将左边界设为中间秩+1,将右边界设为中间秩。
当左边界大于等于有边界时,退出返回-1表示未找到。
难点:边界条件的确定。
*/
public int binarySearch(int[] nums, int target){
int low = 0;
int high = nums.length;
int mid = (low + high) / 2; // 区间为[ , )
while(low < high){
if(target > nums[mid]){
low = mid + 1;
}else if(target < nums[mid]){
high = mid;
}else{
return mid;
}
mid = (low + high) / 2;
}
return -1;
}
这里贴一个小题,大家可以做一做:搜索插入位置