二分查找函数的实现

二分查找函数的实现

  • 1、二分查找的概念
  • 2、在c语言中实现
  • 4、不足之处
  • 5、程序的实现
    • 我们来实现一下代码
    • 二分查找函数的代码
    • 主代码
  • 6、调试结果

1、二分查找的概念

二分查找是一个数学概念,指一个升序数组或降序数组中以(最左下标+最右下标)/2 得到的下标为值,观察与其对应的数字与所要查找的数字的大小关系,若不一致,后以得到的下标为最左或最右值再次循环查找,是一个对于很多的数据来说查找所需数字下标的快速方式。

2、在c语言中实现

我写了两个.c文件,一个用来专门放二分查找这个功能的函数 ( one second ) ,另一个负责实现整体的逻辑 ( test ) 。
在这里插入图片描述

函数的外部声明、循环分支语句的使用等。

4、不足之处

我使用的vs不能使用变长数组,并且使用边长数组之后需要输入数据等比较麻烦的操作,我们的例子以 arr[10] 来进行。

5、程序的实现

题目:
写一个二分查找函数

功能:在一个升序数组中查找指定的数值,找到了就返回下标,找不到就返回-1

int bin_search(int arr[], int left, int right, int key)
// arr 是查找的数组
//left 数组的左下标
//right 数组的右下标
//key 要查找的数字

我们来实现一下代码

二分查找函数的代码

int bin_search(int arr[], int left, int right, int key)
{
	int mid = 0;
	int i = -1;
	while (left <= right)
	{
		mid = (left + right) / 2;
		if (arr[mid] > key)
		{
			right = mid;
		}
		else if (arr[mid] < key)
		{
			left = mid;
		}
		else 
			return mid;
		if (key > arr[right] || key < arr[left])
		{
			return i;
		}
	}
	
}

主代码

#include 
extern int bin_search(int arr[], int left, int right, int key);
int main()
{
	int key = 0;
	scanf("%d", &key);
	int arr[10] = { 1,2,3,4,5,6,7,8,9,10 };
	printf("%d", bin_search(arr, 0, 9, key));
	return 0;
}

6、调试结果

二分查找函数的实现_第1张图片
二分查找函数的实现_第2张图片

二分查找函数的实现_第3张图片

二分查找函数的实现_第4张图片

你可能感兴趣的:(学习编程ing,算法,数据结构,c语言,学习方法,visual,studio,程序人生)