折半查找(c语言)


#include <stdio.h>

/**
 *
 * @param arr 数组必须是有序的
 * @param len 数组的长度
 * @param tagger 要查找的数据
 * @return 要查找的数据的下标,没有就返加-1
 */
int binarySearch(int arr[], int len, int tagger)
{
    int L = 0, R = len - 1;
    int mid;
    while (L <= R)
    {
        mid = (L + R) / 2;
        if (arr[mid] == tagger)
            return mid;
        if (arr[mid] < tagger)
            L = mid + 1;
        else
            R = mid - 1;
    }
    return -1;
}

int main() {
    int arr[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
    int i = binarySearch(arr, 10, 4);
    printf("index = %d\n", i);
    printf("value = %d\n", arr[i]);
    return 0;
}

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM