欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

两个基本的搜索算法.c

程序员文章站 2024-03-18 12:34:46
...

顺序搜索(sequential search)

这个函数检查数v是否在一个事先存储的数的集合a[l],a[l+1],...,a[r]a[l],a[l+1],...,a[r]中。从第一个元素开始,顺序比较每个元素。如果达到末尾而未找到所要找的数,那么返回值为-1.否则,返回这个数所在数组位置处的下标。

int search(int a[],int v,int l,int r)
{
	int i;
	for(i=l;i<=r;i++)
		if(v==a[i])
			return i;
	return -1;
}

二分搜索(binary search)

如果表中的数是有序的,通过把待查找的数与表的中间位置的数进行比较,可以去掉表中一般的数;如果比较结果相等,则查找成功;如果比中间位置的元素小,则在表的左边应用相同的方法;如果比中间位置的元素大,则在表的右边应用相同的方法。

int search(int a[],int v,int l,int r)
{
	while(r>=l)
	{
		int m=(l+r)/2;
		if(v==a[m])
			return m;
		if(v<a[m])
			r=m-1;
		else
			l=m+1;
	}
	return -1;
}
相关标签: C语言实现算法