总结一下本次二面的一道算法题,当时代码写到一半,发现自己逻辑好像有问题,然后就没办法往下写了,导致最终没做出来,面试出来百度了一下,瞬间感觉自己.........
废话不多说,直接看题
需求:写一个二分查找,用迭代的方式去实现,并设计该算法的测试案例
面试完后看见这个题目真是简单,直接代码写起
public class Algorithm{
public int binarySearch(int[] nums,int target){
int left = 0;
int right = nums.length-1;
while(left<=right){
int mid =(left+right)/2;
if(nums[mid]==target){
return mid;
}
else if(nums[mid]<target){
left = mid +1;
}
else if(nums[mid]>target){
right = mid-1;
}
}
return -1;
}
}
测试案例:
public class AlgorithmTestcase{
public static void main(String[] args){
Algorithm algorithm = new Algorithm();
int [] nums = {1,3,5,7,8,9};
int target = 7;
System.out.println(algorithm.binarySearch(nums,target))
}
}
当然,我这里只写了一个正向测试案例,因为我上面的写的二分法是如果能查到目标值,则返回目标只的索引下标,如果target在nums集合中如果没有找到,则返回-1,这个案例请读者自行去写。
原文:https://www.cnblogs.com/igubai/p/12127600.html