我是靠谱客的博主 阳光乌冬面,最近开发中收集的这篇文章主要介绍函数模板实现查找算法(顺序查找、二分查找)模板设计功能介绍代码测试结果,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

模板设计

顺序查找:遍历整个元素序列,逐个元素与要查找的元素进行比较,若其中有某个元素与该值相等,则查找成功(返回该元素的下标),若遍历完了整个序列,都没有找到与之相等的元素,则返回-1。

二分查找:对元素序列进行排序,排序之后,将要查找的值与排序的中间值比较,小于中间值,则到左边查找,大于中间值,到右边查找,递归循环,直到最终找到该值,返回它的下标或者查找序列中只剩下一个值,但它与要查找的值不相等,返回-1。

功能介绍

在这里插入图片描述

代码

main.cpp

#include<iostream>
#include"search.h"
int main()
{
cout<<"创建一个数组a"<<endl;
cout<<"数组的元素为:{1,5,3,6,9}"<<endl;
cout<<endl;
int a[] = {1,5,3,6,9};
cout<<"顺序查找 3 "<<endl<<"若3在数组里,则返回3的位置(从1开始),若不在,则返回 -1"<<endl;
int cur = search(a, 3);
cout<<"输出结果:"<<cur<<endl;
cout<<endl;
cout<<"二分查找 7"<<endl<<"若7在数组里,则返回7的位置(从1开始),若不在,则返回 -1"<<endl;
cur = binary_search(a,7);
cout<<"输出结果:"<<cur<<endl;
return 0;
}
/*
search(T a,int b)
binary_search(T a,int b)
*/

search.h

#include<iostream>
#include<algorithm>
using namespace std;
template <typename T> int getsize(T &array)
{
return sizeof(array)/sizeof(array[0]);
}
template <typename T> int search(T &a,int b)
{
int len = getsize(a);
int cur = -1;
for(int i=0;i<len;i++)
if(a[i] == b) cur = i+1;
return cur;
}
template <typename T> int binary_search(T &a,int b)
{
int len = getsize(a);
int *d
= a ;
sort(d,d+len);
//	for(int i=0;i<len;i++)
//
cout<<d[i]<<" ";cout<<endl;
int cur = -1;
int low = 0,high = len-1;
while(low<high)
{
int mid = (int)(low +high)/2;
//
cout<<"mid:"<<mid<<endl;
//
cout<<"b:"<<b<<" "<<d[mid]<<endl;
if(b == d[mid]) {
cur = mid; break;}
else if(b < d[mid])
low = mid;
else high = mid;
}
return cur;
}

测试结果

在这里插入图片描述

最后

以上就是阳光乌冬面为你收集整理的函数模板实现查找算法(顺序查找、二分查找)模板设计功能介绍代码测试结果的全部内容,希望文章能够帮你解决函数模板实现查找算法(顺序查找、二分查找)模板设计功能介绍代码测试结果所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(32)

评论列表共有 0 条评论

立即
投稿
返回
顶部