- 1、本文档共38页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第三章 查找与排序软件基础知识课件
第三章 查找与排序 1 基本的查找技术 2 基本的排序技术 3 二叉排序树及其查找 3.1基本的查找技术 顺序查找 有序表的对分查找 3.1.1顺序查找 (1)如果线性表为无序表(即表中元素的排列是无序的),则不管是顺序存储结构还是链式存储结构,都只能用顺序查找。 (2)即使是有序线性表,如果采用链式存储结构,也只能用顺序查找。 3.1.2 有序表的对分查找 设有序线性表的长度为n,被查元素为x。 将x与线性表的中间项进行比较: 若中间项的值等于x,则说明查到,查找结束; 若x小于中间项的值,则在线性表的前半部分(即中间项以前的部分) 以相同的方法进行查找; 若x大于中间项的值,则在线性表的后半部分(即中间项以后的部分) 以相同的方法进行查找。 这个过程一直进行到查找成功或子表长度为0(说明线性表中没有这 个元素)为止。 在最坏情况下,对分查找只需比较log2n次,而顺序查找需比较n次。 3.2 基本排序技术 交换排序(冒泡排序与快速排序) 插入排序(简单插入排序与希尔排序) 选择排序(简单选择排序与堆排序) 一 交换排序 冒泡排序的基本过程 冒泡排序示例 快速排序的基本过程 直接(简单)插入排序(Insert Sort) 希尔排序的基本过程 三 选择排序 简单选择排序基本过程 实验: 对于序列(15,25,7,9,11,12)先用冒泡排序对其进行排成升序序列,再查找元素7所在数组的位置。 插入元素68 插入元素71 插入元素77 插入元素88 3.4.2 二叉排序树查找 从二叉排序树的根结点开始与被查值进行比较: (1)若被查值等于根结点值,查找成功,查找过程结束。 (2)若被查值小于根结点值,则到左子树中去查找。 (3)若被查值大于根结点值,则到右子树中去查找。 在左、右子树中查找时也采用上述方法。 查找过程直到查找成功或所考虑的子树已空为止。 二叉排序树查找 输入:二叉排序树头指针BT以及存储空间;被查元素x。 输出:被查元素x在二叉排序树空间中的存储结点序号p struct btnode /*定义结点类型*/ { int d; /*数据域*/ struct btnode *lchild; /*左指针域*/ struct btnode *rchild; /*右指针域*/ }*bt; /*函数返回被查值x所在结点的存储地址*/ struct btnode bstserch(int x) { struct btnode *p; p=bt; while ((p!=NULL)(p-d!=x)) { if (x<p-d) p=p-lchild;/*沿左子树查找*/ else p=p-rchild; /*沿右子树查找*/ } return(p); } * * 线性表在顺序存储结构下的顺序查找 输入:线性表长度n以及线性表的存储空间V;被查找的元素x。 输出:被查找元素x在线性表中的序号k。如果在线性表中不存在元素x,则输出k=-1。 int serch (int v[],int n,int x) { int k; k=0; while ((k<n)(v[k]≠x)) k=k+1; if (k==n) k=-1; return(k); } 有序线性表在顺序存储结构下的对分查找 输入:有序线性表长度n以及线性表的存储空间V;被查找的元素x。 输出:被查找元素x在有序线性表中的序号k。如果在线性表中不存 在元素x,则输出k=-1。 int bserch(int v[],int n,int x) { int i,j,k; i=1; j=n; while (i<=j) { k=(i+j)/2; if (v[k-1]==x) return(k-1); if (v[k-1]>x) j=k-1; else i=k+1; } return(-1); } 排序的一些基本概念 简单地说,排序就是将一组杂乱无章的数据按一定的规律排列起来(递增或递减)。 数据表(Data List) 待排序的数据对象的有限集合。 关键字(Key) 作为排序依据的数据对象中的属性域。 主关键字 不同的数据对象若关键字互不相同,则这种关键字称为主关键字。 排序的确切定义 使一组任意排列的对象变成一组按关键字线性有序的对象。 排序的时间开销 它是衡量算法好坏的最重要的标志。通常用算法执行中的数据比较次数和数据移动次数来衡量。 基本原理:两两比较待排序的对象的关键字,如果发生逆序,则交换之,
您可能关注的文档
- [人教版]6.1.1 有序数对(含答案).doc
- 地球自转公转.ppt
- 3地球自转,公转,太阳直射点移动课件.ppt
- 稳恒磁场2.ppt
- 10.5_热力学第二定律的微观解释.doc
- 浅谈城市公交社区的发展背景与要素分析.doc
- 无序.ppt
- 第一部分 专题一 第三讲 地球的公转.ppt
- 3-2有序无序转变.ppt
- 第7章-排序算法.ppt
- 四川省泸县第二中学2024-2025学年七年级上学期11月期中历史试题(含答案).pdf
- 云南省文山市第二学区2024-2025学年七年级上学期期中生物试题(含答案).pdf
- 江西省抚州市东乡区第二中学等校联考2024-2025学年九年级上学期期中考试语文试题(无答案).pdf
- 辽宁省黑山县2024-2025学年八年级上学期期中质量检测物理试卷.pdf
- 河南省新乡市封丘县2024-2025学年九年级上学期11月期中化学试题(含答案).pdf
- 泸县五中高2022级高三第一次诊断性考试物理试题.pdf
- 山东省淄博市高青县2024-2025学年七年级上学期期中生物学试题(含答案).pdf
- 河南省许昌市长葛市第三实验高级中学2024-2025学年高二上学期11月期中考试语文试题(无答案).pdf
- 云南省昆明市云南师范大学附属中学2024-2025学年高三上学期11月适应性月考卷(五)物理试卷(含解析).pdf
- 浙江省台州市2025届高三第一次教学质量评估英语试题(含答案,含听力原文无音频).pdf
文档评论(0)