您的位置:首页 > 编程语言 > C语言/C++

二分法查找(C语言实现)

2014-12-17 17:27 197 查看


//二分法查找
int BinarySearch()
{
int arr[] = {1,2,3,4,5,6,7,8,9,10,11,12};
int key=3;
int head=0, tail=11, middle;
while (tail>head)
{
middle = (head + tail) / 2;
if (key > arr[middle])
head = middle + 1;
else if (key < arr[middle])
tail = middle - 1;
else
return 1;
}
return -1;
}

//二分法查找  递归
int Binary_Search_By_Recursive(int arr[],int low,int high,int key)
{
    if (low > high)
    {
        return -1;
    }

    int middle = (low + high) / 2;

    if (key < *(arr+middle))
        Binary_Search_By_Recursive(arr,low,middle-1,key);
    else if (key > *(arr+middle))
        Binary_Search_By_Recursive(arr, middle + 1, high, key);
    else
        return 1;
}

//main函数
void main()
{
    int arr[] = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12 };
    //Two_dimensional_array();
    //Tow_dimensinal_array_init();
    //Tow_dimensinal_array_init_oneFor();
    //There_dimensinal_array_init();
    //There_dimensinal_array_init_oneFor();
    //int flag= BinarySearch();

    int flag = Binary_Search_By_Recursive(arr,0,11,-1);
    printf("%d ",flag);
    getchar();
} 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: