0%

AlgorithmLearning-二分查找(分治递归)

基于分治的二分查找

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
int[] sortedArray2 = new int[] { 11121323242546576879 };  
FindIndex(sortedArray2, 2509);
//查找target = 6的index
int FindIndex(int[] sortedArray, int target, int start, int end)
{    
if(start > end)        
return -1;    
int mid = (start + end) / 2;
    mid.Dump();    
    if(sortedArray[mid] == target)        
    return mid;    
if(sortedArray[mid] < target)
    {        
    //递归子问题f(m + 1, end)
    return FindIndex(sortedArray, target, mid + 1, end);
    }    
    else    
    {       
    //递归子问题f(start, m - 1) 
    return FindIndex(sortedArray, target, start, mid - 1);
    }
}