码迷,mamicode.com
首页 > 其他好文 > 详细

折半查找函数

时间:2015-11-07 19:08:37      阅读:296      评论:0      收藏:0      [点我收藏+]

标签:c语言

折半查找

二分查找又称折半查找

优点:比较次数少,查找速度快,平均性能好;

缺点:要求待查表为有序表,且插入删除困难。

因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设表中元素是按升序排列,将表中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将表分成前、后两个子表,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子表,否则进一步查找后一子表。重复以上过程,直到找到满足条件的记录,使查找成功,或直到子表不存在为止,此时查找不成功。

#include<stdio.h>
#include<stdlib.h>

int search(int arr[], int len, int key)
{
	int left = 0;
	int right = len - 1;
	int mid = (left + right) / 2;
	if (key <= right&&key >= left)//输入值在查找范围内开始查找
	{
		while (left <= right)
		{
			if (arr[mid] > key)
			{
				right = mid - 1;
				mid = (left + right) / 2;
			}
			else if (arr[mid] < key)
			{
				left = mid + 1;
				mid = (left + right) / 2;
			}
			else
			{
				printf("查找成功:arr[%d]", mid);
				return mid;

			}
		}
	}
	if (key > right || key < left)
	{
		printf("查找失败");
	}
}
int main()
{
	int i;
	int arr[10];
	int len = sizeof(arr) / sizeof(arr[0]);
	int key = 0;
	int mid = 0;
	for (i = 0; i < len; i++)
	{
		arr[i] = i;
	}
	printf("请输入要查找的数\n");
	scanf("%d", &key);
	search(arr, len, key);//调用查找函数

	system("pause");
	return 0;
}


本文出自 “无以伦比的暖阳” 博客,请务必保留此出处http://10797127.blog.51cto.com/10787127/1710613

折半查找函数

标签:c语言

原文地址:http://10797127.blog.51cto.com/10787127/1710613

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!