首页 > 试题广场 >

手写代码:二分查找的代码

[问答题]
private ArrayList<Integer> binarySearch(int []nums, int left, int right, int value) {
    if(left > right) {
        return new ArrayList<Integet>();
    }
    int mid = (left+right)/2;
    int midValue = nums[mid];
    
    if(value > midValue) {
        return binarySearch(nums, mid+1, right, value);
    } else (value < minValue) {
        return binarySearch(nums, left, mind-1, value);
    } else {
        ArrayList<Integet> retList = new ArrayList<Integer>();
        int temp = mid - 1;
        while(true) {
            if(temp<0 || value != nums[temp]) {
                break;
            }
            retList.add(temp);
            temp--;
        }
        retList.add(mid);
        
        temp = mid + 1;
        while(true) {
            if (temp>nums.length-1 || value != nums[temp]) {
                break;
            }
            retList.add(temp);
            temp++;
        }
        return retList;
    }
}

发表于 2020-10-14 22:26:24 回复(0)