主讲:计算机工程学院 李兰 答疑地点:主教学楼B区213

Slides:



Advertisements
Similar presentations
早自修課推動班級家長說故事及 經驗分享活動。 寒假親師生戶外參訪 ~ 原鄉文化、田園野趣學 習之旅 ~ 造訪鍾理和紀 念館、文學步道。親師生戶外參訪.
Advertisements

一、老师申请题目,以下指导老 师操作。 1. 登录教务系统 web 端. 2. 点击 “ 毕业设计 ” 工具栏下拉菜单中的 “ 论文 _ 教师申请题目 ”
五專醫護類科介紹 樹人醫專 職業教育組 李天豪 組長.
台北市立聯合醫院南軟門診部 皮膚科醫師簡介 溫素瑩醫師 學經歷: 中山醫學院醫學系畢業 台北醫學大學醫學資訊研究所碩士
城市绿化美化 第一模块 城市的园林美 制作人:许启德 湖南湘潭生物机电学校 1.
硕士论文开题报告 煤炭企业物流信息系统的 研究与设计 指导老师: 学生姓名: 学 号:
说网络技术专业 江苏联合职业技术学院徐州财经分院 王 磊.
資料結構與演算法 課程教學投影片.
第 九 章 搜尋(Search) 課程名稱:資料結構 授課老師:_____________.
防制學生藥物濫用 高雄市教育局校外分會 林永興教官.
第八章 网络课程的设计与开发.
评价是为了促进 学生发展的评价。. 评价是为了促进 学生发展的评价。 语言有温度,字词知冷暖.
小学六年级《品德与社会》 不同肤色的人种 授课教师:梅花镇朱家庄小学 孙新霞.
我班最喜愛的零食 黃行杰.
揭秘 庄家 股市中的 为什么你的股票一买就跌,一卖就涨? 为什么出了利好,股价反而下跌? 为什么有的股票一直涨停?
第十章 内部排序 知识点3:快速排序.
第8章 查找 在英汉字典中查找某个英文单词的中文解释;在新华字典中查找某个汉字的读音、含义;在对数表、平方根表中查找某个数的对数、平方根;邮递员送信件要按收件人的地址确定位置等等。可以说查找是为了得到某个信息而常常进行的工作。 计算机、计算机网络使信息查询更快捷、方便、准确。要从计算机、计算机网络中查找特定的信息,就需要在计算机中存储包含该特定信息的表。如要从计算机中查找英文单词的中文解释,就需要存储类似英汉字典这样的信息表,以及对该表进行的查找操作。本章将讨论的问题即是“信息的存储和查找”。
第八章 查找.
第十章 内部排序 10.1 概述 10.2 插入排序 直接插入排序 其他插入排序 希尔排序
在线考试系统 答辩人: 朱允昌、朱碧云、张海燕 汇报时间: 指导老师: 任艳、徐怡 软件应用与开发类
面向对象程序设计 (Visual C# .NET)
互联网时代班主任的挑战 万玮 2014年9月20日.
2009年 初夏 某天 我 一個人 一輛車 計劃 沒有計劃 只想 漫無目的 到處亂晃 感覺夏天的散漫.
第8章 查找 数据结构(C++描述).
班級:夜師資一甲 指導老師:蘇國榮老師 姓名:929201林佑蓉 石依縈 李玉玫 桂秀媛
第8章 字串與陣列 8-1 字串處理 8-2 一維陣列的處理 8-3 建立多維陣列 8-4 不規則陣列與參數傳遞 8-5 陣列排序與搜尋.
前不久看到了这样一则报道:某个大学校园里,一个大学生出寝室要给室友留一张字条,告诉他钥匙放在哪里。可是“钥匙”两个字他不会写,就问了其他寝室的同学,问了好几个,谁也不会写,没办法,只好用“KEY”来代替了。 请大家就此事发表一下自己看法。
乳猪断奶后拉稀,掉膘与教槽料.
利用共同供應契約 辦理大量訂購流程說明.
Chapter 7 Search.
網路點名系統 致遠管理學院網路通訊學系 張逸中 2007/6/22.
第11章 查找 主要知识点 查找的基本概念 静态查找表 动态查找表 哈希表.
第十章 排序.
第10章 查找 10.1 查找的基本概念 10.2 顺序表查找 10.3 索引表查找 10.4 树表查找 10.5 哈希表查找.
东北林业大学 陈宇 ACM程序设计 东北林业大学 陈宇
第九章 排序 9.1排序的基本概念 9.2简单排序方法(复杂度 O(n2)) 9.3先进排序方法(复杂度 O(nLogn))
第9章 排序.
复习.
鄉村尋根-農具篇.
搜尋資料結構 Search Structures.
第4章 数组和集合 4.1 一维数组 4.2 二维数组 4.3 Array类 4.4 交错数组 4.5 ArrayList类
第8章 排 序 8.1 排序技术概述 8.2 插入排序 8.3 选择排序 8.4 交换排序 8.5 归并排序 8.6 基数排序
ASP.NET 90分钟入门 第二课 王 翔.
第九章 查找 2018/12/9.
第八章 查找表 8.1静态查找表 8.2动态查找表 8.3哈希表及其查找.
本章重点难点 重点:顺序查找、二分查找、二叉排序树查找以及散列表查找的基本思想和算法实现。
第 3 讲 线性表(一).
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
数据结构 -Maple Related- 牟克典 数学科学学院信息科学系 2012秋季 1/16/2019.
疾病预防控制绩效考核管理软件 开发思路 & 使用说明
第9章 内部排序 9.1 概述 9.2 插入排序 9.3 快速排序 9.4 选择排序 9.5 归并排序 9.6 基数排序
数据结构 第9章 查找 什么是查找?? 静态查找 动态查找 哈希表 数据结构.
第九章 查找表 9.1静态查找表 9.2动态查找表 9.3哈希表及其查找.
第九章 查找 2019/2/16.
数据结构 第八章 查找.
陈海明 副教授 信息学院 计算机系 电子信息类非计算机专业选修课 程序设计实践 陈海明 副教授 信息学院 计算机系
王玲 第 2 章 线性表 王玲 2019/2/25.
教 师:曾晓东 电 话: E_mail: 计算机软件技术基础 教 师:曾晓东 电 话: E_mail:
飯店業的介紹.
9.1 基本概念 9.2 线性表的查找 9.3 树表的查找 9.4 哈希表的查找 9.5 各种查找方法的比较
顺序查找.
Ch.9 查找 §9.1 基本概念 查找和排序是两个重要的运算
<编程达人入门课程> 本节内容 为什么要使用变量? 视频提供:昆山爱达人信息技术有限公司 官网地址: 联系QQ:
二分查找的应用 ——李江贝, 郝琰 2017年9月28日.
兒童及少年保護、 家庭暴力及性侵害事件、 高風險家庭 宣導與通報
“修身成材” 班级干部培训班 黑龙江大学党委学工部.
2009年 初夏 某天 我 一個人 一輛車 計劃 沒有計劃 只想 漫無目的 到處亂晃 感覺夏天的散漫 按鍵換頁--輕音樂欣賞.
第8章 排序 8.1排序基本概念 8.2插入类排序 8.3交换类排序 8.4选择类排序 8.5归并排序 8.6基数排序
第三章 线性表 3.1 线性表的类型定义 3.2 顺序存储的线性表 3.3 链式存储的线性表 3.4 有序表 3.5 顺序表和链表的综合比较.
本节内容 1.二叉排序树的定义 2.二叉排序树的查找操作 3.二叉排序树的插入操作 4.二叉排序树的删除操作 5.二叉排序树的总结
Presentation transcript:

主讲:计算机工程学院 李兰 邮箱:jsj2014cpp@163.com 答疑地点:主教学楼B区213 第9章 查 找 主讲:计算机工程学院 李兰 邮箱:jsj2014cpp@163.com 答疑地点:主教学楼B区213

学习目标: ⒈了解.NET平台。 ⒉掌握Visual Studio 2008及MSDN的安装。 ⒊创建ASP.NET Web应用程序。 ⒋掌握Visual Studio 2008 IDE的使用技巧。

数据结构课程的内容

基本概念 查找表 查 找 查找成功 查找不成功 静态查找 动态查找 关键字 主关键字 次关键字 是一种数据结构 基本概念 查找表 查 找 查找成功 查找不成功 静态查找 动态查找 关键字 主关键字 次关键字 ——由同一类型的数据元素(或记录)构成的集合。 ——查询(Searching)特定元素是否在表中。 ——若表中存在特定元素,称查找成功,应输出该记录; ——否则,称查找不成功(也应输出失败标志或失败位置) ——只查找,不改变集合内的数据元素。 ——既查找,又改变(增减)集合内的数据元素。 ——记录中某个数据项的值,可用来识别一个记录 ——可以唯一标识一个记录的关键字 例如“学号” ——识别若干记录的关键字 例如“女”

9.1 静态查找表 9.2 动态查找树表 9.3 哈希表

9.1 静 态 查 找 表 假设静态查找表的顺序存储结构为 数据元素类型的定义为: typedef struct { 9.1 静 态 查 找 表 假设静态查找表的顺序存储结构为 typedef struct { ElemType *elem; // 表基址,建表时按实际长度分配0号单元留空 int length; // 表的长度 } SSTable; 数据元素类型的定义为: typedef struct { keyType key; // 关键字域 … … // 其它属性域 } ElemType ;

对关键字需要执行的平均比较次数(也称为平均查找长度)作为衡量一个查找算法效率优劣的标准。 9.1 顺序查找 查找过程:从表的一端开始逐个进行记录的关键字和给定值的比较 例 0 1 2 3 4 5 6 7 8 9 10 11 5 13 19 21 37 56 64 75 80 88 92 找64 64 i i i i i 查找第n个元素: 1 查找第n-1个元素:2 ………. 查找第1个元素: n 比较次数=5 监视哨 查找第i个元素: n+1-i 查找失败: n+1 对关键字需要执行的平均比较次数(也称为平均查找长度)作为衡量一个查找算法效率优劣的标准。

int Search_Seq(SSTable ST, KeyType key) { ST.elem[0].key = key; // “哨兵” for (i=ST.length; ST.elem[i].key!=key; --i); // 从后往前找 return i; // 找不到时,i为0 } // Search_Seq

2 有序查找表 若以有序表表示静态查找表,则查找过程可以基于“折半”进行。 2 有序查找表 上述顺序查找表的查找算法简单,但平均查找长度较大,特别不适用于表长较大的查找表。 若以有序表表示静态查找表,则查找过程可以基于“折半”进行。

价格竞猜的小游戏 1000 3000 3500 4000 5000 主持人:平板的价格在1000元到5000元之间 主持人:少了 主持人:多了 主持人:恭喜你答对了!

折半查找的过程 例如: 在下面的表中查找key=64 的过程如下: ST.length ST.elem low low high high 64<elem[mid] high=mid-1 到前半区间查找 64=elem[mid] 查找成功 64>elem[mid] low=mid+1 到后半区间查找 ST.elem low low high high mid mid mid 步骤: while(low<=high) //搜素区间>=1 { 1.mid=(low+high)/2 2.如果key==elem[mid] return mid 否则 如果key<elem[mid] high=mid-1 否则 如果key>elem[mid] low=mid+1 } low 指示查找区间的下界 high 指示查找区间的上界 mid = (low+high)/2

折半查找的过程 例如: 在下面的表中查找key=63 的过程如下: ST.length ST.elem low low high high 63>elem[mid].key low=mid+1 到后半区间查找 low>high 搜素区间为负,搜素失败 63<elem[mid].key high=mid-1 到前半区间查找 63<elem[mid].key high=mid-1 到前半区间查找 ST.elem low low high high mid mid mid 步骤: while(low<=high) //搜素区间>=1 { 1.mid=(low+high)/2 2.如果key==elem[mid] return mid 否则 如果key<elem[mid] high=mid-1 否则 如果key>elem[mid] low=mid+1 } low 指示查找区间的下界 high 指示查找区间的上界 mid = (low+high)/2

折半查找的算法 low <= high (low + high) / 2 int Search_Bin ( SSTable ST, KeyType key ) { low = 1; high = ST.length; // 置区间初值 while ( ) { mid = ; //查找成功 else if ( key < ST.elem[mid].key) // 继续在前半区间进行查找 else // 继续在后半区间进行查找 } //查找失败 } // Search_Bin low <= high (low + high) / 2 if (key == ST.elem[mid].key ) return mid; high = mid - 1; low= mid + 1; return 0;

也可以采用如下递归算法: int BinSearch(SSTable ST,int low,int high,KeyType key) { int mid; if (low<=high)   { mid=(low+high)/2; if (ST[mid].key==key) return mid; if (ST[mid].key>key)//在R[low..mid-1]中递归查找 else //在R[mid+1..high]中递归查找 } else return 0; BinSearch(ST,low,mid-1,key); BinSearch(ST,mid+1,high,key);

查找性能分析 先看一个具体的情况,假设:表中有11个数据 3 4 2 3 4 1 3 4 2 3 4 判定树 6 3 9 1 4 2 5 7 8 10 11 < = > =(1*1+2*2+3*4+4*4)/11=3 查找性能优于顺序查找

6 3 9 4 7 1 10 5 8 2 11 一般情况下,表长为 n 的折半查找的判定树的深度和含有 n 个结点的完全二叉树的深度相同。 假设 n=2h-1 并且查找概率相等 则 在n>50时,可得近似结果 6 3 9 4 7 1 10 5 8 2 11

3 索引存储结构和分块查找 索引存储结构 索引存储结构=数据表+索引表 索引表中的每一项称为索引项,索引项的一般形式是: (关键字,地址) 3 索引存储结构和分块查找 索引存储结构 索引存储结构=数据表+索引表 索引表中的每一项称为索引项,索引项的一般形式是: (关键字,地址) 关键字唯一标识一个节点,地址作为指向该关键字对应节点的指针,也可以是相对地址。

例如,逻辑结构City,将区号看成是关键字,其索引存储结构如下图所示。索引表由(区号,地址)组成,其中区号按递增次序排序。 数据表 地址 关键字 区号 城市名 说明 300 010 100 Beijing 首都 310 021 130 Shanghai 直辖市 320 025 210 160 027 Wuhan 湖北省省会 330 190 029 Xian 陕西省省会 340 Nanjing 江苏省省会

分块查找  性能:    介于顺序查找和二分查找之间的查找方法。 思路:   (1)将数据表R[0..n-1]均分为b块,前b-1块中记录个数为s=n/b,最后一块即第b块的记录数小于等于s;   (2)每一块中的关键字不一定有序,但前一块中的最大关键字必须小于后一块中的最小关键字,即要求表是“分块有序”的;   (3)抽取各块中的最大关键字及其起始位置构成一个索引表IDX[0..b-1],即IDX[i](0≤i≤b-1)中存放着第i块的最大关键字及该块在表R中的起始位置。由于表R是分块有序的,所以索引表是一个递增有序表。

例如,设有一个线性表,其中包含25个记录,其关键字序列为:   8,14,6,9,10,22,34,18,19,31,40,38,54,66,     46,71,78,68,80,85, 100, 4,88,96,87   假设将25个记录分为5块,每块中有5个记录,该线性表的索引存储结构如下图所示。