二分法查找有序数列

来源:互联网 发布:linux mongodb 启动 编辑:程序博客网 时间:2024/05/22 14:33

二分法

#define _CRT_SECURE_NO_WARNINGS#include <stdio.h> int Binary_Search(int *arr, int x, int lengh){                                         int left = 0, right = lengh - 1;  //left=0,right=11-1    int mid = 0;    while (left <= right)    {        mid = left + (right - left) / 2;  //mid=0+(10-0)/2=5        if (x < arr[mid])        {            right = mid - 1;        }        else if (x > arr[mid])        {            left = mid + 1;        }        else        {            return mid;        }    }    return -1;}int main(){    int x = 71;  //要找的数    int arr[] = { 0, 1, 2, 3, 4, 5, 61, 71, 81, 91, 101 };    int lengh = 0;    lengh = sizeof(arr) / sizeof(arr[0]);        printf("%d \n", Binary_Search(arr, x, lengh));  //输出下标    return 0;}