模板:二分搜索技术

代码如下:

 1 template <class T> int binarySearch(const T* pt, int n, T t)
 2
 3 {
 4  int head = 0, tail = n-1;
 5  int i;
 6  while (tail >= head)
 7  {
 8   i = (head + tail) / 2;
 9   if (t == pt[i])
10    return i;
11   if (t < pt[i])
12    tail = i - 1;
13   else
14    head = i + 1;
15  }
16  return -1;
17 }

参考:

http://chenkegarfield.blog.163.com/blog/static/62330008200911191540807/

模板:二分搜索技术,布布扣,bubuko.com

时间: 2024-10-03 13:39:00

模板:二分搜索技术的相关文章

(3) PHP 随笔---Smarty模板引擎技术基础+MiniSmarty 01-02

◇smarty是模板引擎技术之一,作用是使得“php”代码与“html代码”分离. ◇一个项目里,有 程序员.美工人员.DBA数据库管理员.系统运维人员. ◇创建虚拟主机,两个步骤: ◇先修改httpd-hosts.conf,加上一个<VirtualHost *:80>.....</VirtualHost>      修改该标签其中的内容 ◇再去修改hosts文件中最后关联域名与ip.   即可 ◇创建一个自己的模板引擎MiniSmarty.class.php,代码如下: 1 &l

经典算法之二分搜索技术

二分法是个非常经典的算法,是分治思想的很好的体现.在复习算法的过程中,正好把他记录下来. 本来想写递归的,后来想想还是用迭代,效率更高些,虽然对这种小的数据没什么多大影响,(好吧,其实是我太懒了 <-_->!!) 这里有个坑,以前一直没有注意,这里标记一下,调整上下限的时候一定要 low = mid + 1: high = mid - 1: 否则可能遇到相邻的两个数字时候,陷入死循环!!! 代码如下: // =====================[二分搜索技术 ]=============

模板Trait 技术与简述template 元编程

模板Trait 技术 想了好久都没有想到合适的例子,已是干脆直接使用[1]中的例子就好了. STL 中引入了迭代器的概念.但是在本文中的例子不直接使用STL 的迭代器,而是写了一段很简短的代码,作为演示使用. 本例中的迭代器有三种: Forward_Iter,只能向前进,也就是只能加非负数 Bidirectional_Iter,可以双向增减 Random_Iter,可以随意增减 *本例并没有沿用STL 中的名称,请注意区别 对于三种的迭代器的偏移,大概如下: template<typename

计算机算法设计与分析之递归与分治策略——二分搜索技术

递归与分治策略 二分搜索技术 我们所熟知的二分搜索算法是运用分治策略的典型例子,针对这个算法,先给出一个简单的案例. 目的:给定已排好序的n个元素a[0:n-1],现要在这n个元素中找出一特定的元素x. 我们首先想到的最简单的是用顺序搜索方法,逐个比较a[0:n-1]中元素,直至找出元素x或搜索遍整个数组后确定x不在其中.这个方法没有很好地利用n个元素已排好序的这个条件,因此在最坏的情况下,顺序搜索方法需要O(n)次比较. 而二分搜索方法充分利用了元素间的次序关系,采用分治策略,可在最坏情况下用

Smarty模板引擎技术(一)

一.Smarty模板引擎简介 什么是smarty? Smarty是采用php写的一个模版引擎,设计的目的是要将php代码与html代码分离,使php程序员只专注于php代码的编写,网页美工只专注于网页的美化 没有模版引擎时出现的问题? html中php代码比重越来越大 页面的数量越来越多 程序设计与美工设计分工不明确 传统的php文件: 1. php代码跟html混编在一起,不利于程序员和美工的分工,程序员和美工不能同时修改一个文件 2.数据的传递同一页面传递,php数据在页面中的显示需要使用p

二分搜索技术

二分搜索算法上运用分治策略的典型例子. 给定已排好序的n个元素a[0...n-1],现在要在这n个元素中找出一特定元素x. 首先想到的是用顺序搜索方法,逐个比较a[0...n-1]中元素,直至找出元素x或搜索整个数组后确定x不在其中.这个算法没有很好利用n个元素已排好序这个条件,因此在最坏情况下,顺序搜索方法需要O(n)次比较. 二分搜索方法充分利用了元素间的次序关系,采用分治策略,可在最坏情况下用O(logn)时间完成搜索任务. 二分搜索算法的基本思想是将n个元素分成个数大致相同的两半,取a[

Smarty模板引擎技术(二)

一.使用Smarty模板引擎步骤 第一步:引入smarty核心类文件并创建一个smarty实例对象: include_once “libs/smarty/Smarty.class.php”; $smarty=new Smarty(); 第二步:对核心类中属性或变量的配置 $smarty->template_dir=”./templates”; $smarty->compile_dir=”./templates_c”; $smarty->config_dir=”./configs”; $s

2_3 递归与分治策略(二分搜索技术)

二分搜索算法是分支策略的典型应用,具体是在给定的有n个元素的已排序序列a中找出一个特定元素. 基本思想:将n个元素分为两半,取a[n/2]与x进行比较, 如果x<a[n/2],继续在数组a的左半部分搜索. 如果x>a[n/2],继续在数组a的右半部分搜索. (图片源自百度图片) 查找算法对比: 1.顺序搜索不能很好利用排序这个已知条件,而且是O(n)算法. 2.二分搜索充分利用排序条件,算法复杂度是O(log n). 上代码: public class a_2_3<T extends C

编程思想与技术总结

不是天才,但我相信,通过有效的方法和训练,以及持之以恒地积累,完全是可以成为一名出色的开发者的.那么,到目前为止,掌握了多少思想.方法和技术可以用于开发程序.处理软件开发过程中所遇到的问题呢?不妨作下总结,以备后用.       1.   抽象: 萃取出主要特征,而摒弃次要不相关的特征:无需了解物质的内部实现细节而基于其提供的抽象来构造应用:声明与实现相分离.计算机科学中的抽象俯拾即是,比如汇编语言是对机器硬件的抽象,编译器是对高级程序语言的抽象,进程是对程序一次执行的抽象,线程是对任务执行流的