C在一段有序数组中判断一个数是否在这个数组中(二分查找)
程序员文章站
2024-03-15 20:16:48
...
写代码可以在整型有序数组中查找想要的数字,找到了返回下标,找不到返回-1.(折半查找)
这道题简单在有序数组,方便查找
#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
#include <math.h>
#include <windows.h>
#include <stdlib.h>
#include <time.h>
int binary_search(int arr[], int key, int left, int right)//定义查找函数
{
while(left<=right)
{
int mid = left+(right-left)/2;
if(arr[mid] > key)//比较目标数和数组中间数
right = mid-1;//
else if(arr[mid] < key)
left = mid+1;
else
{
return mid;
}
}
return -1;
}
int main()
{
//二分查找,也叫折半查找
int arr[] = {1,2,3,4,5,6,7,8,9,10};
int key = 7;
int ret = 0;
int sz = sizeof(arr)/sizeof(arr[0]);//数组长度
ret = binary_search(arr, key, 2, 8);
if(ret == -1)
{
printf("找不到\n");
}
else
{
printf("找到了:%d\n", ret);
}
system("pause");
return 0;
}
上一篇: 在有序旋转数组中找到最小值
推荐阅读
-
C在一段有序数组中判断一个数是否在这个数组中(二分查找)
-
C++将一个有序数组按顺序移动,在移动后的数组中查找一个数字
-
C语言:在二维数组中,每行每列都按照递增的顺序排序,判断数组中是否包含一个数。
-
算法007:二分查找 请实现有重复数字的有序数组的二分查找,输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一
-
C#中判断一个数组中是否存在某个数组值
-
C语言使用技巧(十一):判断数组中是否存在某个数 / break的一个小技巧
-
二维数组中的查找—在一个递增的二维数组中判断给定数是否在数组当中
-
算法007:二分查找 请实现有重复数字的有序数组的二分查找,输出在数组中第一个大于等于查找值的位置,如果数组中不存在这样的数,则输出数组长度加一
-
C语言:在二维数组中,每行每列都按照递增的顺序排序,判断数组中是否包含一个数。
-
C语言使用二分法实现在一个有序数组中查找具体的某个数字n