版权声明:本文为博主原创文章,未经博主允许不得转载。 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;
}