欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

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;
}