【数据结构----笔记1】查找算法之【顺序查找和折半查找】

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_32211827/article/details/77711621

#include<iostream>
#include<Windows.h>
using namespace std;

typedef int ElemType;
/*___________________________________________________________________________________________________________
文件说明:
		【顺序查找算法】
基本说明:
		【顺序查找】:又称为线性查找,主要用在---线性表---中进行查找
		【顺序查找】通常分为:1---无序线性表的一般查找;2---对关键字有序的顺序表查找
优缺点分析:
		【1】【顺序查找的缺点】:当线性表的表长过于长时,平均查找长度较大,效率低。
		【2】【顺序查找的优点】:对顺序表中数据元素的【存储】没有要求,【顺序存储】和【链式存储】均可。
		【3】需注意:对于线性表的【链式存储】只能使用【顺序查找】
____________________________________________________________________________________________________________*/
template<typename ElemType>ElemType SeqSearch(ElemType array[],ElemType key,int iLength)
{
	for(int index=0;index<iLength;index++)
	{
		if(array[index]==key)
		{
			return index;
		}
	}
	return -1;
}
/*____________________________________________________________________________________________________________
模块说明
		【折半查找算法】
基本说明
		【1】【折半查找】,又称【二分查找】,它仅适用于有序的顺序表
基本思想
		首先将给定值key与表中间位置元素的关键字比较,若想等,则查找成功,返回该元素的存储位置;
			(例如,在查找表升序排列时,若给定值key大于中间元素的关键字,则所查找的关键字只可能在后半部分)
		若不等,则所需查找的元素只能在中间元素以外的前半部分或后半部分中;
		然后在缩小范围内继续进行同样的查找,如此重复直到找到为止,若查找不成功,返回查找失败信息
优缺点分析
		【折半查找方法的优点】:折半查找的优点是比较次数少,查找速度快,平均性能好;
		【折半查找方法的缺点】:折半查找的缺点是:要求待查表为有序表,且插入删除困难。
		因此:折半查找方法适用于不经常变动而查找频繁的有序列表。
____________________________________________________________________________________________________________*/
template<typename ElemType>int BinarySearch(ElemType array[],ElemType key,int iLength)
{
	int low = 0;
	int high = iLength;
    int mid = 0;
	while(low<=high)
	{
		mid = ( low + high )/2;
		if(array[mid==key])
		{
			return mid;
		}
		else if(array[mid]>key)
		{
			high = mid-1;
		}
		else
		{
			low = mid+1;
		}
	}
	return -1;
}
/*_____________________________________________________________________________________________________________
模块说明
		控制台应用程序入口点---------------我们的程序从这里开始!!!
______________________________________________________________________________________________________________*/
int main()
{
	int array[10]={0,1,2,3,4,5,6,7,8,9};
	std::cout<<"所查找的关键字顺序是:"<<SeqSearch<int>(array,4,10)<<std::endl;
	std::cout<<"所查找的关键字的顺序是:"<<BinarySearch<int>(array,3,10)<<std::endl;
	
	system("pause");
	return 0;
}















猜你喜欢

转载自blog.csdn.net/qq_32211827/article/details/77711621