查找算法:顺序查找,折半查找及递归算法

一、顺序查找

算法思想:从表的一端开始,依次将记录的关键字和给定值进行比较,若某个记录的关键字和给定的值相等,则查找成功;反之,若扫描整个表后,仍未找到关键字和给定值相等的记录,则查找失败。

#define MAX 100//定义表中最多纪录个数
typedef int keytype;
typedef char infotype[10];
typedef struct
{
	keytype key;//keytype为关键字的数据类型
	infotype data;//其他数据
}nodetype;
int seqsearch(seqlist r,int n,keytype k)//顺序查找算法
{
    /*
	int i;
	for(i=1;i<=n;i++)
		if(r[i].key==k) return i;
	return 0;
	*/
	//改进:设置监视哨的顺序查找
	int i;
	r[0].key=k;//哨兵
	for(i=n;r[i].key!=k;--i);
	return i;
}

算法的时间复杂度:O(n)==>(1+2+...+n)/n

二、折半查找(二分查找)

前提:线性表必须采用顺序存储结构;表中元素按关键字有序排列。

算法思想ÿ

你可能感兴趣的:(数据结构与算法,C语言)