二分查找法的C++泛型实现

简介: 算法很简单,直接贴代码啦   #include <iostream> using namespace std; template<typename T> int binary_search(const T s[],const int size,const T &m) { if(size <= 0){ return -1;

算法很简单,直接贴代码啦

 

#include <iostream>

using namespace std;

template<typename T>
int binary_search(const T s[],const int size,const T &m)
{
 if(size <= 0){
  return -1;
 }
 int i = size/2;
 int k = 1;
 int step = 1;

 while(step > 0 && i >= 0 && i < size){
  step = size/(2*++k);
  if(m == s[i]){
   return i;
  }else if(m > s[i]){
   i += step;
  }else{
   i -= step;
  }
 }

 return -1;
}

int main()
{
 long s[]={1,3,5,6,19,27,38,45,687,6789,10000};
 
 int len = sizeof(s)/sizeof(long);

 cout<<"0:"<<binary_search<long>(s,len,1)<<endl;
 cout<<"1:"<<binary_search<long>(s,len,3)<<endl;
 cout<<"5:"<<binary_search<long>(s,len,27)<<endl;
 cout<<"10:"<<binary_search<long>(s,len,10000)<<endl;
 cout<<"-1:"<<binary_search<long>(s,len,10001)<<endl;
 cout<<"-1:"<<binary_search<long>(s,len,44)<<endl;
 cout<<"-1:"<<binary_search<long>(s,len,0)<<endl;

 return 0;
}


 

相关文章
|
8月前
|
算法 编译器 C++
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits 判断 Lambda表达式类型?
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits 判断 Lambda表达式类型?
151 4
|
8月前
|
安全 算法 C++
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
【C/C++ 泛型编程 应用篇】C++ 如何通过Type traits处理弱枚举和强枚举
160 3
|
11天前
|
存储 算法 C++
【C++数据结构——查找】二分查找(头歌实践教学平台习题)【合集】
二分查找的基本思想是:每次比较中间元素与目标元素的大小,如果中间元素等于目标元素,则查找成功;顺序表是线性表的一种存储方式,它用一组地址连续的存储单元依次存储线性表中的数据元素,使得逻辑上相邻的元素在物理存储位置上也相邻。第1次比较:查找范围R[0...10],比较元素R[5]:25。第1次比较:查找范围R[0...10],比较元素R[5]:25。第2次比较:查找范围R[0..4],比较元素R[2]:10。第3次比较:查找范围R[3...4],比较元素R[3]:15。,其中是顺序表中元素的个数。
116 66
【C++数据结构——查找】二分查找(头歌实践教学平台习题)【合集】
|
7月前
|
编译器 程序员 C++
C++一分钟之-模板基础:泛型编程
【6月更文挑战第21天】C++模板,泛型编程的关键,让代码跨类型工作,增强重用与灵活性。理解模板基础,如函数和类模板,注意避免特化与偏特化的混淆、编译时膨胀及复杂的错误调试。通过明确特化目的、限制模板使用及应用现代C++技术来优化。示例展示了模板如何自动或显式推导类型。模板元编程虽强大,但初学者宜从基础开始。正确使用模板,提升代码质量,同时保持简洁。
60 3
|
4月前
|
存储 算法 C++
C++提高篇:泛型编程和STL技术详解,探讨C++更深层的使用
文章详细探讨了C++中的泛型编程与STL技术,重点讲解了如何使用模板来创建通用的函数和类,以及模板在提高代码复用性和灵活性方面的作用。
71 2
C++提高篇:泛型编程和STL技术详解,探讨C++更深层的使用
|
3月前
|
存储 编译器 C++
【C++篇】引领C++模板初体验:泛型编程的力量与妙用
【C++篇】引领C++模板初体验:泛型编程的力量与妙用
59 9
|
8月前
|
算法 安全 编译器
【C++】从零开始认识泛型编程 — 模版
泛型编程是C++中十分关键的一环,泛型编程是C++编程中的一项强大功能,它通过模板提供了类型无关的代码,使得C++程序可以更加灵活和高效,极大的简便了我们编写代码的工作量。
94 3
|
3月前
|
编译器 C语言 C++
C++入门6——模板(泛型编程、函数模板、类模板)
C++入门6——模板(泛型编程、函数模板、类模板)
79 0
C++入门6——模板(泛型编程、函数模板、类模板)
|
8月前
|
算法 程序员 C++
【C/C++ 泛型编程 应用篇】C++ 对多参数的参数包的 参数类型提取 应用
【C/C++ 泛型编程 应用篇】C++ 对多参数的参数包的 参数类型提取 应用
138 5
|
8月前
|
安全 程序员 编译器
【C/C++ 泛型编程 进阶篇 Type traits 】C++类型特征探究:编译时类型判断的艺术
【C/C++ 泛型编程 进阶篇 Type traits 】C++类型特征探究:编译时类型判断的艺术
637 1