折半查找(二分查找)算法

顺序查找的优点是算法简单,表中对有序性无要求,但是查找效率比较低。

折半查找跟普通的顺序查找的区别是:折半查找要求表中的元素是有序的,并且是采用顺序存储的,不能是链式存储的。

折半查找的主要思路是:在有序的表中,取得表中的中间记录进行比较。如果给定查找的值和中间记录相等,就表示查找成功;如果给定查找的值小于中间记录,则在中间记录的左边继续查找;如果给定查找的值大于中间记录,则在中间记录的右边继续查找;不断重复这个过程,直至查找成功或者查不到给定查找的值,如下图所示。

设有序表为数组matrix,其长度为n,需要查找的值为k,其算法可以描述为: 

int mid_search(int matrix[],int n,int k)
{
	int low=1,high=n,mid;
	while(low<=high)
	{
		mid=(low+high)/2;
		if(k<matrix[mid])
			high=mid-1 ;
		else if(k>matrix[mid])
			low=mid+1;
		else
			return mid;
	}
	return 0;
}

猜你喜欢

转载自blog.csdn.net/qq49649174/article/details/99761862