算法与复杂性剖析.pptx

  1. 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
  2. 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  3. 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
大学计算机__计算思维导论;第4章 算法与复杂性;第4章 算法与复杂性;;排序(Sort): 对一组对象按照“关键字”递增(或递减)的排列的过程。 “关键字”:是指对象的一个用于排序的特性。例如:对一组“人”进行排序:可按“年龄”/“身高”进行排序, “人”即为对象,而“年龄”、“身高”等则为“关键字”。 在计算科学中,排序对象是多种多样的。 排序--许多复杂问题求解的基础,如数据库查询、数据挖掘、搜索引擎等大规模数据处理算法实现的基础。 通过排序可有效降低问题求解算法的执行时间。;1)结构化数据表的查找与统计需要排序 下图为学生成绩表,以“记录”为元素,将大量数据组织成一张表。 在数据表中,类似如下的查找或统计是使用频率非常高的操作: (1)“查找80分以上的同学?” (2)“查找姓名为江海的同学及其相关信息?” (3)“查找学号为120300106同学的相关信息?”;1)结构化数据表的查找与统计需要排序 怎样完成查找和统计呢? 未排序的数据查寻,需要检索整个数据表才能正确回答上面的问题。需要访问n条记录。 已按“关键字”排序的数据进行查询,则仅需访问一半甚至更少的记录便可得到正确的结果。 当数据表的记录数非常庞大时,显而易见,数据排序则是节省时间提高查找效率的有效手段。;1)结构化数据表的查找与统计需要排序 怎样对结构化的数据进行排序呢? 内排序问题:待排序的数据可一次性地装入内存中,即可以完整地看到和操纵所有数据,使用数组或其他数据结构便可进行统一的排序处理的排序问题; 外排序问题:待排序的数据保存在磁盘上,不能一次性装入内存,即不能一次完整地看到和操纵所有数据,需要将数据分批装入内存分批处理的排序问题;;1)结构化数据表的查找与统计需要排序 怎样实现内排序和外排序呢? 问题:某教师要对学生按身高排序。教师只能在容纳100人房间(相当于内存)中对学生进行排序。 对于小于100人的学生排序问题属于内排序问题。 对于大于100人的学生排序问题,学生并不能都进入房间,而只能在操场(相当于磁盘)等候,轮流进入房间,这样的排序便属于外排序问题。;2)非结构化数据(文档)的查找与搜索也需要排序 针对图书馆/网上大量的文献/文档 如何快速地查找一份文档? 如何确定一份文档是否包含给定的一个或多个“关键词”? 哪些词汇是一份文档的关键词? 当用户输入一个关键词查询的时候,是否要扫描这几十几百几千万册文档呢? 这些问题的解决需要倒排索引文件的技术;2)非结构化数据(文档)的查找与搜索也需要排序 倒排索引文件的技术 对一份文档,去掉标点符号和一些辅助词汇,将所有出现的单词无重复地按照出现的频次由多到少排列出来。 将频次排序在前面的若干个词汇,或者频次超过一定阈[yù] 值的若干个词汇作为本文档的关键词。 对于所有的文档,建立一个“索引表”(类似于一般纸质图书后面都有的索引表),通常称为倒排索引文件;4.1.1 排序问题;(a)Google的搜索结果排序示意;1)内排序 插入排序 基本思想:类似于打扑克牌时,一边抓牌,一边理牌的过程,每抓一张牌就把它插入到适当的位置,牌抓完了,也理完了这种策略被称为插入排序。 ;1)内排序--插入排序(后插算法);1)内排序--插入排序(后插算法) ;1)内排序 选择排序 基本思想:一个轮次一个轮次的处理。首先在所有数组元素中找出最小值的元素,放在A[1]中;接着在不包含A[1]的余下的数组元素中再找出最小值的元素,放置在A[2]中;如此下去,一直到最后一个元素。这一排序策略被称为选择排序。;1)内排序--选择排序;n个数从小到大选择法排序的算法 1. n 个数选择排序,要做 n-1 次选择 ; 2. 每一次选择都是在尚未排好序的数中找最小数,交换到尚未排好序数的第一个位置上。;1)内排序--选择排序 ;1)内排序 冒泡排序 基本思想:一个轮次一个轮次的处理。在每一轮次中依次对待排序数组元素中相邻的两个元素进行比较,将小的放前,大的放后--递增排序(或者是将大的放前,小的放后--递减排序)。 ;9 8 5 4 2 0;8 5 4 2 0 9;5 4 2 0 8 9;4 2 0 5 8 9;2 0 4 5 8 9;N个数从小到大冒泡法排序的算法: 1. N 个数排序,要进行 N-1 趟扫描。 2. 第 i 趟扫描时,要做 N-i 次两两比较 第几趟扫描 未排序数个数 两两比较的次数 1 N N-1 2

文档评论(0)

四月 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档