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

写一个函数,实现一个整形有序数组的二分查找。

程序员文章站 2024-03-17 14:34:34
...

C语言 写一个函数,实现一个整形有序数组的二分查找

//按理说,指针和数组是互不相关的两个概念.不能说有区别
//但是C语言中把两个搞混了.两者有点像而已
//数组可以批量创建相同类型变量.
//指针是一个单独变量,里面存的是一个整数,整数的含义是内存中的一个地址.
//数组很多时候都能隐形转成指针.
//指针也可以像一个数组一样使用(可以支持[])

#include <stdio.h>
#include <stdlib.h>
//写一个函数,实现一个整形有序数组的二分查找
int BinarySearch(int* arr, int size, int tofind){
	//[left, right] 待查找区间
	int left = 0;
	int right = size - 1;
	//若int right = sizeof(arr) / sizeof(arr[0]) - 1;
	//输出right = 0, 数组会隐形转成一个指针.
	while (left <= right){
		int mid = (left + right) / 2;
		if (arr[mid] < tofind){
			//要去右侧区间查找
			left = mid + 1;//mid这个位置已查找
		}else  if (arr[mid] > tofind){
			//去左侧区间找
			right = mid - 1;
		}else{
			//找到了
			return mid;//返回位置的下标
		}
	}
	return -1;//-1表示没找到
}
int main(){
	int arr[] = { 1, 2, 3, 4, 5, 6, 7 };
	int size = sizeof(arr) / sizeof(arr[0]);
	int ret = BinarySearch(arr, size, 2);//找2.
	printf("ret = %d\n",ret);
	system("pause");
	return 0;
}
相关标签: C语言