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[] { 11, 12, 13, 23, 24, 25, 46, 57, 68, 79 };  
FindIndex(sortedArray2, 25, 0, 9);
//查找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);
    }
}