二叉树的查找设计
来源:互联网 发布:电信网络转换 编辑:程序博客网 时间:2024/05/18 01:10
时间:2013.12.27
地点:软件大楼211
----------------------------------------------------------------------------------------------————
一、简述
二叉查找(Binary search)算法在数组有序时时间复杂度为O(log n),一种合理的设计方式是函数原型包活6个参数,头三个参数为数组自身、查找起始下标、查找范围元素个数,后面3个参数为查找目标、查找成功与否标志、索引。
函数原型可声明如下:
void binary_search(const int a[], size_t first, size_t size, int target, bool &found, size_t &location);//前置条件:从a[first]开始、含有size个元素的数组段,其元素从下到大排列//后置条件:从a[first]开始,含有size个元素的数组段中查找target。如果找到target// 那么found为true,并设置location,使得target==a[location],否则found// 设置为false
二、实现
二叉树的算法思想和简单,无非是对查找区域不断递归搜索目标,期间我们不断折半缩小查找范围,当范围数组个数为0时停止递归。但在递归调用时,由于范围不断的变化,因此下标的计算很容易出错。因此总结如下,在其他类似折半处理过程中经常用到:
1.计算数组中间元素索引公式为: middle=first+size/2;
2.中间元素除外的前半段元素个数为: size/2;
2.中间元素除外的后半段元素个数为: (size-1)/2; //数学上应为(size/2)-1,但如此当size=1时会导致索引为负操作,我们做恰当的处理,如此计算后的索引不可能出现为负的情况。
三、代码
下面为二叉查找函数的一个实现
void binary_search(const int a[], size_t first, size_t size, int target, bool &found, size_t &location)//前置条件:从a[first]开始、含有size个元素的数组段,其元素从下到大排列//后置条件:从a[first]开始,含有size个元素的数组段中查找target。如果找到target// 那么found为true,并设置location,使得target==a[location],否则found// 设置为false{size_t middle;if (size == 0)found = false;else{middle = first + size / 2;if (target == a[middle]){location = middle;found = true;}else if (target < a[middle]){binary_search(a, first, size / 2, target, found, location);}else{binary_search(a, middle + 1, (size-1 )/ 2, target, found, location);}}}
0 0
- 二叉树的查找设计
- 数据结构基础(17) --二叉查找树的设计与实现
- 数据结构基础(17) --二叉查找树的设计与实现
- 数据结构基础(17) --二叉查找树的设计与实现
- 二叉树的查找
- 二叉树的查找
- 二叉查找树的
- 【算法设计-二叉搜索树】二叉查找树的操作与实现
- 数据结构-----二叉查找树 哈希表设计
- 基于树的查找--------------二叉查找树
- 二叉树------二叉查找树的相关内容
- 二叉查找树的 创建 查找 访问
- 二叉查找树的插入,删除,查找
- 二叉查找树的插入,删除,查找
- 18.二叉查找树 的 查找 添加
- 二叉查找树的插入,删除,查找
- 二叉查找树的建立,遍历,查找
- 二叉查找树的建立
- 第一次使用git 将 工程发布到github中
- 发展之道:简单与专注
- Python实用技巧-成为Pythoner必经之路
- Android源代码下载过程中无法下载repo的解决方法
- Android APK 签名比对
- 二叉树的查找设计
- 题目1035:找出直系亲属
- 如何利用Python和win32编程避免重复性体力劳动(三)——文本框操作:WM_GETTEXT 和WM_SETTEXT
- Java中的枚举类详讲
- 程序员学英语三部曲
- UITableView模拟聊天界面
- ASP:TextBox 只允许输入数字
- 二维几何基础
- Hive文件的导入与导出