喵呜:二分查找法在有序数组中的应用

Posted 爱吃榴莲的喵星人

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了喵呜:二分查找法在有序数组中的应用相关的知识,希望对你有一定的参考价值。

喵博主用二分查找的两种写法在一个有序数组中查找数字

写法一:

#include<stdio.h>
int BinarySearch(int* arr, int sz, int k)

	int left = 0;
	int right = sz - 1;
	while (left <= right)
	
		int mid = (left + right) / 2;
		if (arr[mid] > k)
		
			right = mid - 1;
		
		else if (arr[mid] < k)
		
			left = mid + 1;
		
		else
		
			return mid;//找到返回
		
	
	if (left > right)
	
		return -1;//没有找到
	

int main()

	int arr[10] =  1,2,3,4,5,6,7,8,9,10 ;
	int sz = sizeof(arr) / sizeof(arr[0]);//数组长度
	int k = 0;//找的数字
	scanf("%d", &k);
	int num = BinarySearch(arr, sz, k);
	if(num == -1)
		printf("找不到\\n");
	else
	    printf("找到了,下标是:%d\\n", num);
	return 0;

 

 写法二:

#include<stdio.h>

int BinarySearch(int* a, int sz, int k)

	
	int begin = 0;
	int end = sz - 1;
	while (begin <= end)
	
		int mid = begin + ((end - begin) >> 1);
		if (a[mid] < k)
		
			begin = mid + 1;
		
		else if (a[mid] > k)
		
			end = mid - 1;
		
		else
			return mid;
	
	return -1;

int main()

	int arr[10] =  1,2,3,4,5,6,7,8,9,10 ;
	int sz = sizeof(arr) / sizeof(arr[0]);
	int k = 0;
	scanf("%d", &k);
	int num = BinarySearch(arr, sz, k);
	if(num == -1)
		printf("找不到\\n");
	else
	    printf("找到了,下标是:%d\\n", num);
	return 0;

 

以上为这篇文章所有内容,如有错误多和喵博主讨论,相互学习相互进步。

以上是关于喵呜:二分查找法在有序数组中的应用的主要内容,如果未能解决你的问题,请参考以下文章

二分查找应用---有序数组中的单一元素

使用二分查找向一个有序数组中插入一个数据

[二分查找] 两个有序数组中的第K小数

二分查找总结

Task 04:数组二分查找

php查找之二分查找