SlideShare a Scribd company logo
1 of 36
第 8 章 查找
 8.1 查找的基本概念
 8.2 基于线性表的查找
 8.3 散列
 8.4 二叉排序树和平衡二叉树
目的和要求
 目的:查找算法设计。
• 内容:顺序查找、折半查找、分块查找
;散 列表;二叉排序树。
• 要求:掌握查找的概念和多种查找算法
设 计,学习根据不同情况选择合适的
查 找算法,掌握提高查找效率采取的
各 种方法。
• 重点:顺序查找、折半查找、分块查找
;散 列表;二叉排序树。
• 难点:散列表;二叉排序树。
• 实验:查找算法及其效率分析。
《数据结构( Java 版)(第 3 版)》
8.1 查找的基本概念
1. 查找操作和查找结果
关键字( key ) 、主关键字( primary key )
1. 查找算法及其提高查找效率的措施
 顺序查找
 数据排序、建立索引、散列存储、建立二叉
排序树
1. 查找算法性能评价 )(
1
i
n
i
i cpASL ×= ∑=
《数据结构( Java 版)(第 3 版)》
8.2 基于线性表的查找
8.2.1 顺序查找
8.2.2 基于有序顺序表的折半查找
8.2.3 基于索引顺序表的分块查找
《数据结构( Java 版)(第 3 版)》
8.2.1 顺序查找
1.顺序表的顺序查找
public int indexOf(T key)// 顺序查找关键字为
key 元素,返回首次出现的元素,若查找不成功返
回 -1 。 key 可只包含关键字数据项,由 T 类的
equals() 提供比较对象相等的依据
public T search(T key) // 查找
public boolean contain(T key) // 判断是否包含
关键字为 key 元素
public void remove(T key) // 删除首次出现元素
《数据结构( Java 版)(第 3 版)》
2. 单链表的顺序查找
public T search(T key) // 顺序查找关键
字为 key 元素,返回首次出现的元素,
若查找不成功返回 null
public boolean contain(T key)
// 判断线性表是否包含关键字为
key 元素
public void remove(T x) // 删除首次出
现的值为 x 的结点,若没找到指定结点
则不删除
《数据结构( Java 版)(第 3 版)》
3. 顺序查找算法分析
)(
2
1
2
)1(11
)(
11
nO
nnn
n
i
n
cpASL
n
i
i
n
i
i =
+
=
+
×==×= ∑∑ ==
成功
)()
1
()(
11
nOnn
n
cpASL
n
i
i
n
i
i ==×=×= ∑∑ ==
不成功
《数据结构( Java 版)(第 3 版)》
8.2.2 基于有序顺序表的折半查
找
1. 折半查找算法
《数据结构( Java 版)(第 3 版)》
2. 折半查找算法分析
625.2
8
21
)43333221(
8
1
==+++++++=成功ASL
《数据结构( Java 版)(第 3 版)》
8.2.3 基于索引顺序表的分块
查找
1. 索引
2. 分块查
找
a. 字典的
分块查
找
《数据结构( Java 版)(第 3 版)》
例 8.1 判断一个字符串是否为 Java 关
键字。
《数据结构( Java 版)(第 3 版)》
例 8.2 采用扩充索引表查询 Java 关键
字。
《数据结构( Java 版)(第 3 版)》
( 2 )支持插入和删除操作
的索引结构及其分块查找
《数据结构( Java 版)(第 3 版)》
《数据结构( Java 版)(第 3 版)》
8.3 散列
8.3.1 散列表
8.3.2 散列函数
8.3.3 处理冲突
8.3.4 构造链地址法的散列表
《数据结构( Java 版)(第 3 版)》
8.3.1 散列表
1. 散列函数
i=hash(key)
1. 冲突
21 kk ≠
)()( 21 khashkhash =
《数据结构( Java 版)(第 3 版)》
8.3.2 散列函数
1. 除留余数法
hash(k)=k % p
1. 平方取中法
2. 折叠法
散列表长度 8 16 32 64 128 256
最大素数 7 13 31 61 127 251
《数据结构( Java 版)(第 3 版)》
8.4.3 处理冲突
1. 开放定址法
《数据结构( Java 版)(第 3 版)》
2. 链地址法
6.1
10
232216
=
×+×+×
=成功ASL
《数据结构( Java 版)(第 3 版)》
图 8-12 链地址法散列表的插
入和删除操作
《数据结构( Java 版)(第 3 版)》
8.4.4 构造链地址法的散列表
《数据结构( Java 版)(第 3 版)》
采用链地址法的散列表类
public class HashSet<T>
{
private SinglyLinkedList<T>[] table;
// 散列表,同义词单链表对象数组
public HashSet(int length)
public HashSet()
private int hash(T x) // 散列函数
public void insert(T x) // 插入 x 元素
public void remove(T x) // 删除 x 元素
public T search(T key) // 查找
}
《数据结构( Java 版)(第 3 版)》
例 8.3 统计文本中各字符的出现
次 数,为建立 Huffman 树做准备。
《数据结构( Java 版)(第 3 版)》
8.4 二叉排序树和平衡二叉
树
8.4.1 二叉排序树
8.4.2 平衡二叉树
《数据结构( Java 版)(第 3 版)》
8.4.1 二叉排序树
1. 定义
2. 查找
《数据结构( Java 版)(第 3 版)》
3. 插入
《数据结构( Java 版)(第 3 版)》
二叉排序树类
public class BinarySortTree<T extends
Comparable<T>> extends
BinaryTree<T>
《数据结构( Java 版)(第 3 版)》
【例
8.4 】 二
叉排序树
的插入和
查找操作
。
《数据结构( Java 版)(第 3 版)》
4. 二叉排序树的删除
《数据结构( Java 版)(第 3 版)》
5. 二叉排序树的查找性能分
析
625.2
8
21
)14432211(
8
1
)(
1
==×+×+×+×=×= ∑=
i
n
i
i cpASL成功
5.4
2
18
2
11
1
=
+
=
+
== ∑=
n
i
n
ASL
n
i
成功
《数据结构( Java 版)(第 3 版)》
8.4.2 平衡二叉树
1. 平衡二叉树定义
《数据结构( Java 版)(第 3 版)》
2.
平
衡
二
叉
树
的
插
入
《数据结构( Java 版)(第 3 版)》
3. 调整平衡的模式
( 1 ) LL 型调整
《数据结构( Java 版)(第 3 版)》
( 2 ) RR 型调整
《数据结构( Java 版)(第 3 版)》
( 3 ) LR 型调整
《数据结构( Java 版)(第 3 版)》
( 4 ) RL 型调整

More Related Content

Viewers also liked

Decks by aaddadda #31043
Decks by aaddadda #31043Decks by aaddadda #31043
Decks by aaddadda #31043enrike_phph
 
Вступна лекція: Предмет і завдання курсу «Деталі машин»
Вступна лекція: Предмет і завдання курсу «Деталі машин»Вступна лекція: Предмет і завдання курсу «Деталі машин»
Вступна лекція: Предмет і завдання курсу «Деталі машин»Ch1ffon
 
Rechevaya gotovnost1
Rechevaya gotovnost1Rechevaya gotovnost1
Rechevaya gotovnost1hennessy007
 
Manajemen logistik kl
Manajemen logistik   klManajemen logistik   kl
Manajemen logistik klSu darjo
 
сложные проценты
сложные процентысложные проценты
сложные процентыRomero78
 
Сергей Долгов на SMDAY2013. Продажи через социальные медиа с малым бюджетом: ...
Сергей Долгов на SMDAY2013. Продажи через социальные медиа с малым бюджетом: ...Сергей Долгов на SMDAY2013. Продажи через социальные медиа с малым бюджетом: ...
Сергей Долгов на SMDAY2013. Продажи через социальные медиа с малым бюджетом: ...Evgeni
 
слайды к лекции №23
слайды к лекции №23слайды к лекции №23
слайды к лекции №23student_kai
 
Decks by aaddadda #28034
Decks by aaddadda #28034Decks by aaddadda #28034
Decks by aaddadda #28034enrike_phph
 
Инвестиционная идея - рост акций компании Apple
Инвестиционная идея  - рост акций компании AppleИнвестиционная идея  - рост акций компании Apple
Инвестиционная идея - рост акций компании AppleRomashka_QK_
 
презентация Seo
презентация Seoпрезентация Seo
презентация Seoantonovob
 
Фабрика Идеальных продуктов на GSEA-2014
Фабрика Идеальных продуктов на GSEA-2014Фабрика Идеальных продуктов на GSEA-2014
Фабрика Идеальных продуктов на GSEA-2014Stanislav Dovidenko
 
13 priznakov togo_chto_vy_uchitel
13 priznakov togo_chto_vy_uchitel13 priznakov togo_chto_vy_uchitel
13 priznakov togo_chto_vy_uchitelALEXANDRA_K1988
 

Viewers also liked (20)

16
1616
16
 
Decks by aaddadda #31043
Decks by aaddadda #31043Decks by aaddadda #31043
Decks by aaddadda #31043
 
Вступна лекція: Предмет і завдання курсу «Деталі машин»
Вступна лекція: Предмет і завдання курсу «Деталі машин»Вступна лекція: Предмет і завдання курсу «Деталі машин»
Вступна лекція: Предмет і завдання курсу «Деталі машин»
 
гиперопёка
гиперопёкагиперопёка
гиперопёка
 
Rechevaya gotovnost1
Rechevaya gotovnost1Rechevaya gotovnost1
Rechevaya gotovnost1
 
Manajemen logistik kl
Manajemen logistik   klManajemen logistik   kl
Manajemen logistik kl
 
Vibrance
Vibrance Vibrance
Vibrance
 
Альга бэби
Альга бэбиАльга бэби
Альга бэби
 
11
1111
11
 
сложные проценты
сложные процентысложные проценты
сложные проценты
 
Сергей Долгов на SMDAY2013. Продажи через социальные медиа с малым бюджетом: ...
Сергей Долгов на SMDAY2013. Продажи через социальные медиа с малым бюджетом: ...Сергей Долгов на SMDAY2013. Продажи через социальные медиа с малым бюджетом: ...
Сергей Долгов на SMDAY2013. Продажи через социальные медиа с малым бюджетом: ...
 
слайды к лекции №23
слайды к лекции №23слайды к лекции №23
слайды к лекции №23
 
Homeschooling the teenager-225
Homeschooling the teenager-225Homeschooling the teenager-225
Homeschooling the teenager-225
 
3
33
3
 
Decks by aaddadda #28034
Decks by aaddadda #28034Decks by aaddadda #28034
Decks by aaddadda #28034
 
Инвестиционная идея - рост акций компании Apple
Инвестиционная идея  - рост акций компании AppleИнвестиционная идея  - рост акций компании Apple
Инвестиционная идея - рост акций компании Apple
 
Наша візитка
Наша візиткаНаша візитка
Наша візитка
 
презентация Seo
презентация Seoпрезентация Seo
презентация Seo
 
Фабрика Идеальных продуктов на GSEA-2014
Фабрика Идеальных продуктов на GSEA-2014Фабрика Идеальных продуктов на GSEA-2014
Фабрика Идеальных продуктов на GSEA-2014
 
13 priznakov togo_chto_vy_uchitel
13 priznakov togo_chto_vy_uchitel13 priznakov togo_chto_vy_uchitel
13 priznakov togo_chto_vy_uchitel
 

Similar to 第08章 查找(java版)

第04章 栈和队列(java版)
第04章  栈和队列(java版)第04章  栈和队列(java版)
第04章 栈和队列(java版)Yan Li
 
第09章 排序(java版)
第09章  排序(java版)第09章  排序(java版)
第09章 排序(java版)Yan Li
 
第02章 线性表(java版)
第02章  线性表(java版)第02章  线性表(java版)
第02章 线性表(java版)Yan Li
 
第10章 综合应用设计(java版)
第10章  综合应用设计(java版)第10章  综合应用设计(java版)
第10章 综合应用设计(java版)Yan Li
 
第06章 树和二叉树(java版)
第06章  树和二叉树(java版)第06章  树和二叉树(java版)
第06章 树和二叉树(java版)Yan Li
 
数据结构 总结与复习
数据结构 总结与复习数据结构 总结与复习
数据结构 总结与复习Wang Yizhe
 
第01章 绪论(java版)
第01章  绪论(java版)第01章  绪论(java版)
第01章 绪论(java版)Yan Li
 
第05章 数组和广义表(java版)
第05章  数组和广义表(java版)第05章  数组和广义表(java版)
第05章 数组和广义表(java版)Yan Li
 
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection[圣思园][Java SE]Reflection
[圣思园][Java SE]ReflectionArBing Xie
 
Information Retrieval
Information RetrievalInformation Retrieval
Information Retrievalyxyx3258
 
第07章 图(java版)
第07章  图(java版)第07章  图(java版)
第07章 图(java版)Yan Li
 
Coreseek/Sphinx 全文检索实践指南
Coreseek/Sphinx 全文检索实践指南Coreseek/Sphinx 全文检索实践指南
Coreseek/Sphinx 全文检索实践指南HonestQiao
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionFrank S.C. Tseng
 
深入学习Mongo db
深入学习Mongo db深入学习Mongo db
深入学习Mongo dbLucien Li
 
数据分析架构实例与安全的云挖掘
数据分析架构实例与安全的云挖掘数据分析架构实例与安全的云挖掘
数据分析架构实例与安全的云挖掘mysqlops
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJustin Lin
 
SQL 語法入門 - SARG
SQL 語法入門 - SARGSQL 語法入門 - SARG
SQL 語法入門 - SARGStudy4TW
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章浒 刘
 
cnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearchcnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearchSzuping Wang
 

Similar to 第08章 查找(java版) (20)

第04章 栈和队列(java版)
第04章  栈和队列(java版)第04章  栈和队列(java版)
第04章 栈和队列(java版)
 
第09章 排序(java版)
第09章  排序(java版)第09章  排序(java版)
第09章 排序(java版)
 
第02章 线性表(java版)
第02章  线性表(java版)第02章  线性表(java版)
第02章 线性表(java版)
 
第10章 综合应用设计(java版)
第10章  综合应用设计(java版)第10章  综合应用设计(java版)
第10章 综合应用设计(java版)
 
第06章 树和二叉树(java版)
第06章  树和二叉树(java版)第06章  树和二叉树(java版)
第06章 树和二叉树(java版)
 
数据结构 总结与复习
数据结构 总结与复习数据结构 总结与复习
数据结构 总结与复习
 
第01章 绪论(java版)
第01章  绪论(java版)第01章  绪论(java版)
第01章 绪论(java版)
 
第05章 数组和广义表(java版)
第05章  数组和广义表(java版)第05章  数组和广义表(java版)
第05章 数组和广义表(java版)
 
[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection[圣思园][Java SE]Reflection
[圣思园][Java SE]Reflection
 
Information Retrieval
Information RetrievalInformation Retrieval
Information Retrieval
 
第07章 图(java版)
第07章  图(java版)第07章  图(java版)
第07章 图(java版)
 
Coreseek/Sphinx 全文检索实践指南
Coreseek/Sphinx 全文检索实践指南Coreseek/Sphinx 全文检索实践指南
Coreseek/Sphinx 全文检索实践指南
 
Kid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese VersionKid171 chap03 traditional Chinese Version
Kid171 chap03 traditional Chinese Version
 
深入学习Mongo db
深入学习Mongo db深入学习Mongo db
深入学习Mongo db
 
数据分析架构实例与安全的云挖掘
数据分析架构实例与安全的云挖掘数据分析架构实例与安全的云挖掘
数据分析架构实例与安全的云挖掘
 
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與MapJava SE 7 技術手冊投影片第 09 章 - Collection與Map
Java SE 7 技術手冊投影片第 09 章 - Collection與Map
 
SQL 語法入門 - SARG
SQL 語法入門 - SARGSQL 語法入門 - SARG
SQL 語法入門 - SARG
 
Sun java
Sun javaSun java
Sun java
 
软件工程 第十一章
软件工程 第十一章软件工程 第十一章
软件工程 第十一章
 
cnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearchcnYes 如何使用 elasticsearch
cnYes 如何使用 elasticsearch
 

More from Yan Li

Chapter 01 essentials final
Chapter 01 essentials finalChapter 01 essentials final
Chapter 01 essentials finalYan Li
 
Chapter 05 essentials final
Chapter 05 essentials finalChapter 05 essentials final
Chapter 05 essentials finalYan Li
 
Chapter 04 essentials final
Chapter 04 essentials finalChapter 04 essentials final
Chapter 04 essentials finalYan Li
 
Chapter 02 essentials final
Chapter 02 essentials finalChapter 02 essentials final
Chapter 02 essentials finalYan Li
 
Chapter 03 essentials final
Chapter 03 essentials finalChapter 03 essentials final
Chapter 03 essentials finalYan Li
 
Introduction to om
Introduction to omIntroduction to om
Introduction to omYan Li
 
第03章 串(java版)
第03章  串(java版)第03章  串(java版)
第03章 串(java版)Yan Li
 

More from Yan Li (7)

Chapter 01 essentials final
Chapter 01 essentials finalChapter 01 essentials final
Chapter 01 essentials final
 
Chapter 05 essentials final
Chapter 05 essentials finalChapter 05 essentials final
Chapter 05 essentials final
 
Chapter 04 essentials final
Chapter 04 essentials finalChapter 04 essentials final
Chapter 04 essentials final
 
Chapter 02 essentials final
Chapter 02 essentials finalChapter 02 essentials final
Chapter 02 essentials final
 
Chapter 03 essentials final
Chapter 03 essentials finalChapter 03 essentials final
Chapter 03 essentials final
 
Introduction to om
Introduction to omIntroduction to om
Introduction to om
 
第03章 串(java版)
第03章  串(java版)第03章  串(java版)
第03章 串(java版)
 

第08章 查找(java版)