二分查找的思想和实现

来源:互联网 发布:网络技术支持工程师 编辑:程序博客网 时间:2024/06/06 01:23

二分查找:
1.只适用于一组有序数,杂乱无序的数是不能使用二分法查找的
2.思想:根据你查找的数来判断查找前半段还是后半段

/* ======================================================= Name        : halfSearch.c Author      : fzl Version     : Copyright   : Your copyright notice ======================================================== */#include <stdio.h>#include <stdlib.h>/* arr数组,  len数组长度, data待查找数, 返回找到的下标 */int hSearch(const int *arr, const int len, const int data){    int low = 0; /* 最小边界 */    int high = len - 1; /* 最大边界 */    int mid = 0;    /* 中界 */    int c = 1;    while (low <= high)    {        printf("第%d次\n", c++);        mid = (high + low) / 2; /* 2分取中  */        if(arr[mid] == data)        {             return mid; /* 找到, 返回下标*/        }                     else if(arr[mid] > data)        {             high = mid - 1;/* 最大边界缩小到 中间-1*/        }          else         {             low = mid + 1;/* 最小边界缩小到  中间+1*/        }       }    return -1; /* 没找到 返回-1  */}int main(int argc, char *argv[]){    int a[] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};    int find = 9;    printf("a[%d] = %d\n", hSearch(a, sizeof(a) / sizeof(int), find), find);    return EXIT_SUCCESS;}
1 0
原创粉丝点击