C语言二分查找法

学习笔记 马富天 2016-09-20 21:39:39 80 2

【摘要】用c语言编写一个用"二分查找法"查找一组数中是否存在数 search 的函数。调用该函数,若存在此数,返回此数在数组中的位置;若不存在此数,返回-1,并输出 "NO FOUND" 信息。

完整代码如下:

  1. #include <stdio.h>
  2. //	二分搜索算法
  3. int BinarySearch(int numbers[],int tot,int search)
  4. {
  5. 	int l = 0;
  6. 	int r = tot - 1;
  7. 	int mid = (l + r) / 2;
  8. 	while(l <= r)
  9. 	{
  10. 		//	找到所搜索的数
  11. 		if(search == numbers[mid])
  12. 		{
  13. 			return mid;
  14. 		}
  15. 		//	搜索的数在数组的左半部分
  16. 		if(search < numbers[mid])
  17. 		{
  18. 			r = mid - 1;
  19. 		}else	//	在数组的右半部分
  20. 		{
  21. 			l = mid + 1;
  22. 		}
  23. 		mid = (l + r) / 2;
  24. 	}
  25. 	//	没有找到
  26. 	return -1;
  27. }
  28. int main()
  29. {
  30. 	int numbers[] = {1,3,5,8,10,22,60,88,112,124,300};	//	递增的有序数列
  31. 	int search = 22;	//	要查找的数
  32. 	int index;	//	找到的数的下标
  33. 	int tot = sizeof(numbers) / sizeof(numbers[0]);	//	数的总数
  34. 	index = BinarySearch(numbers,tot,search);
  35. 	if(index == -1)
  36. 	{
  37. 		printf("NO FOUND");
  38. 	}else
  39. 	{
  40. 		printf("index is : %d\n", index);
  41. 	}
  42. }

版权归 马富天个人博客 所有

本文标题:《C语言二分查找法》

本文链接地址:http://www.mafutian.com/208.html

转载请务必注明出处,小生将不胜感激,谢谢! 喜欢本文或觉得本文对您有帮助,请分享给您的朋友 ^_^

0

0

上一篇《 Windows 下 C 开发环境的搭建 》 下一篇《 ubuntu 下 apache 服务器虚拟主机的配置 》

所有评论

  1. 首页
  2. 上一页
  3. 1
  4. 下一页
  5. 尾页
  6. 第1页
  7. 每页12条
  8. 共1页
  9. 共2条
评论审核未开启
表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情 表情
验证码

TOP10

  • 浏览最多
  • 评论最多