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

mac2024-11-17  8

二分查找作为一种及其重要的查找方法 我们需要着重掌握!

下面是二分查找的具体实现

int BinaryFind(int arr[], int size, int to_find) //三个参数 一个数组用来存放需要查找的数据 第二size用来表示长度 最后一个find用来表示查找 { int left = 0; int right = size - 1; //对数组的长度进行定义 取最左边为第零个 去最右边为数组长度减一 因此一共有 arr【】个 while (left <= right)//循环条件 当定义的数组左边小右边大时 即正常大小 { int mid = (left + right) / 2;//面试中有相减防止溢出的不同算法 //定义一个临时变量用于存储目前数组中间的数值 找出数组的中间元素的下标 //注意找出的临时变量存放的是数组的下标 数组的下标 //建立选择语句if 用于比较 将要查找的数与我们找出的数组中间元素进行比较 //分三点进行选择 //中间元素大于查找数字时 待查找区间锁定为前半区 //中间元素大于查找数字时 待查找区间锁定为后半区 //相等时候就说明查找到了! //循环结束没有找到返回-1 说明查找失败 if (to_find < arr[mid]) { right = mid - 1; //right=mid-1; 因为与mid进行过了比较了!因此区间在左边 mid-1 区间在右边 mid+1 } else if (to_find > arr[mid]) { left = mid + 1; } else { return mid; } } return -1;//未找到返回 -1 } int main() { int arr[] = { 1, 3, 4, 6, 7, 8, 10, 13, 14 }; int to_find = 4; int size = sizeof(arr) / sizeof(arr[0]); //数组字节除以数组下标为零的 就是数组的包含 //调用函数 查看返回值 int i = BinaryFind(arr, size, to_find); //判定找到与否 //选择语句进行输出 if (i == -1) { printf("没找到!\n"); } else { printf("找到了!下标为:%d\n", i); } system("pause"); return 0; }

原创文章zy

最新回复(0)