一、非递归的二分查找
#define _CRT_SECURE_NO_WARNINGS #include<stdio.h> #include<ctype.h> int main() { int arr[10] = { 1,2,3,4,5,6,7,8,9,10 }; int num, right = sizeof(arr) / sizeof(arr[0]) - 1, left = 0, mid=0 ; (void)scanf("%d", &num); while (left <= right) { mid = ((right - left)>>1)+left; if (arr[mid] == num) { printf("找到数据%d,位于下标%d\n", num, mid); break; } else if (arr[mid] > num) { right = mid - 1; } else { left = mid + 1; } } while (left > right) { printf("不存在数据%d", num); break; } }
ps:定义左下标和右下标,用两个下标的中间来判断是否等于所要查找的数
用if来判断此时的中间数字与所要查找的数字的大小
如果没有数据则输出不存在数据
二、使用递归的二分查找
//二分查找 #include<stdio.h> int BinarySearch0(int *arr,int len, int left, int right,int value) { int midIndex = ((right - le
二分查找递归与非递归
最新推荐文章于 2022-08-22 19:08:00 发布