大学计算机计算思维与信息素养第10章.pptxVIP

  • 58
  • 0
  • 约2.52千字
  • 约 52页
  • 2021-12-04 发布于北京
  • 举报

大学计算机计算思维与信息素养第10章.pptx

;第10章 受限资源约束下的算法—排序问题求解示例;一、为什么要研究排序问题待求解问题的理解;为什么要研究排序算法--结构化数据表查找问题 (2)为什么要研究排序问题? ;为什么要研究排序算法--结构化数据表查找问题 (2)为什么要研究排序问题? ;结构化数据表的查找与统计需要排序;为什么要研究排序算法--结构化数据表查找问题 (2)为什么要研究排序问题? ;结构化数据表的查找与统计需要排序;为什么要研究排序算法非结构化的数据文档查找问题 (1)非结构化数据(文档)的查找问题? ;为什么要研究排序算法--非结构化的数据文档查找问题 (2)索引与倒排索引--需要排序? ;为什么要研究排序算法--非结构化的数据文档查找问题 (3)关键词的提取--需要排序? ;为什么要研究排序算法--非结构化的数据文档查找问题 (4)小结? ;为什么要研究排序算法--非结构化的数据文档查找问题 (4)小结?;第10章 受限资源约束下的算法—排序问题求解示例;类似于打扑克牌时,一边抓牌,一边理牌的过程: 每抓一张牌就把它插入到适当的位置; 牌抓完了,也理完了。 这种策略被称为插入排序;12;INSERTION-SORT(A) 1. for i=2 to N 2. { key = A[i] ; 3. j =i-1; 4. While (j0 and A[j]key) do 5. { A[j+1]=A[j]; 6. j=j-1; } 7. A[j+1]=key; 8. } ;首先在所有数组元素中找出最小值的元素,放在A[1]中; 接着在不包含A[1]的余下的数组元素中再找出最小值的元素,放置在A[2]中; 如此下去,一直到最后一个元素。 这一排序策略被称为简单选择排序。;12;SELECTION-SORT(A) 1. for i=1 to N-1 2. { k=i; 3. for j=i+1 to N 4. { if A[j]A[k] then k=j; } 5. if ki then 6. { 7. temp =A[k]; 8. A[k]=A[i]; 9. A[i]=temp; 10. } 11. } ;一个轮次一个轮次的处理。 在每一轮次中依次对待排序数组元素中相邻的两个元素进行比较,将大的放前,小的放后--递减排序(或者是将小的放前,大的放后--递增排序)。 当没有交换时,则数据已被排好序。;12;BUBBLE-SORT(A) 1. for i=1 to N-1 2. { haschange=false; 3. for j=1 to N-i 4. { if A[j]A[j+1] then 5. { temp =A[j]; 6. A[j]=A[j+1]; 7. A[j+1]=temp; 8. haschange=true; 9. } 10. } 11. if (haschange ==false) then break; 12. } ;内排序问题:待排序的数据可一次性地装入内存中,即排序者可以完整地看到和操纵所有数据,使用数组或其他数据结构便可进行统一的排序处理的排序问题; 外排序问题:待排序的数据保存在磁盘上,不能一次性装入内存,即排序者不能一次完整地看到和操纵所有数据,需要将数据分批装入内存分批处理的排序问题;;受限资源约束下的算法--内排序与外排序问题 (2)外排序环境与问题示例? ;外排序算法的环境/资源(仅介绍思想,忽略一些细节), 假设: 读写磁盘块函数: ReadBlock, WriteBlock 内存大小: 共Bmemory =6块, 每块可装载Rblock =5个元素 待排序数据: Rproblem=60个元素, 共占用Bproblem=12块;基本排序策略 Bproblem块数据可划分为N个子集合, 使每个子集合的块数小于内存可用块数,即:Bproblem/N Bmemory。每个子集合都可装入内存并采用内排序算法排好序并重新写回磁盘。;子集合已排好序,如何进行总排序 内存不能装下所有子集合 ;磁盘;N个子集合各自依次序读取一块装入内存;归并排序--过程模拟(详细介绍参见另一部份:过程模拟);归并排序--算法描述;90 86 82 80 75;归并排序--过程模拟;算法的效率:读写磁盘块的次数,即I/O数= 4 Bproblem 子集合排序阶段读一遍写一遍 2 Bproblem 归并阶段读一遍写一遍 2 Bproblem;大数据集块数 Bmemory2如何排序呢?;内存大小:

文档评论(0)

1亿VIP精品文档

相关文档