首页 > 其他分享 >败者树、置换选择排序、最佳归并树

败者树、置换选择排序、最佳归并树

时间:2024-10-06 20:10:54浏览次数:1  
标签:归并 败者 置换 最佳 排序 初始

败者树

img

img

img

img

img

img

败者树用一个数组即可实现,而且,上图中的那些方块所代表的结点是不存储在败者树中的

置换选择排序

置换选择排序的目的是构造出比工作区更长的初始归并段,而更长就意味着初始归并段会更少,可能会减少归并的趟数,进而减少读写磁盘次数来优化排序时间。

置换选择排序的核心思想就是记录一个MINIMAX代表当前初始归并段中的最大值,当工作区中所有的元素都大于MINIMAX时就新开一个归并段

尽管我们可以通过某种构造,让每个初始归并段的长度都很小,但是很显然,这种方法生成的初始归并段的长度不会小于工作区长度

最佳归并树

img

img

img

最佳归并树就是一种哈夫曼树,如果各个初始归并段长度不一,我们要选择一种最合适的合并方式使得磁盘IO次数最小(在这里IO次数其实就是WPL)

在构造m叉最佳归并树时,有可能要补充几个长度为0的虚段才能得到最优解,而补充几个虚段也是这个考点最爱考的地方,下面我们来进行求解

标签:归并,败者,置换,最佳,排序,初始
From: https://www.cnblogs.com/AH20/p/18449359

相关文章

  • 排序
    排序的定义排序就是重新排列表中的元素,使表中的元素满足关键字有序的过程算法的稳定性:若待排序表中有两个元素相等,经过排序后原来位置这两个元素的相对位置不变,则称这个算法是稳定的根据在排序过程中数据元素是否完全放在内存中,可以将排序算法分为两类:内部排序和外部排序。内部......
  • CCF-CSP认证资格考试题解系列——第4次第2题数字排序
    #include<iostream>#include<algorithm>usingnamespacestd;structre{ intvalue;//数值 intnum;//次数}re[1010];boolcmp(structrea,structreb){ if(a.num==b.num)returna.value<b.value;//次数相同是小的优先 returna.num>b.num;//次数不相同是次数优......
  • 信息学奥赛复赛复习13-CSP-J2021-02插入排序-排序稳定性、插入排序、sort排序、结构体
    PDF文档公众号回复关键字:202410061P7910[CSP-J2021]插入排序[题目描述]插入排序是一种非常常见且简单的排序算法。小Z是一名大一的新生,今天H老师刚刚在上课的时候讲了插入排序算法。假设比较两个元素的时间为O(1),则插入排序可以以O(n^2)的时间复杂度完成长度为......
  • 归并排序笔记
    inttmp[];//temp数组存储数据voidmerge_sort(inta[],intl,intr){ if(l>=r)return;//递归到最后只有一个数返回 intmid=(l+r)/2;//确定分界点l~midmid+1~r; merge_sort(a,l,mid); merge_sort(a,mid+1,r);//递归左右两边 intk=0,i=l,j=mi......
  • 各种排序算法相关性质整理
    排序算法稳定性最优时间复杂度平均时间复杂度最坏时间复杂度空间复杂度选择排序不稳定\(O(N^2)\)\(O(N^2)\)\(O(N^2)\)\(O(1)\)冒泡排序稳定\(O(N)\)\(O(N^2)\)\(O(N^2)\)\(O(1)\)插入排序稳定\(O(N)\)\(O(N^2)\)\(O(N^2)\)\(O(1)\)计数排序......
  • 归并排序
    inttmp[];//temp数组存储数据voidmerge_sort(inta[],intl,intr){if(l>=r)return;//递归到最后只有一个数返回intmid=(l+r)/2;//确定分界点l~midmid+1~r;merge_sort(a,l,mid);merge_sort(a,mid+1,r);//递归左右两边intk=0,i=l,j=mid+1;......
  • 快速排序
    取数组中任意一个数,用两个指针i,j(i在j左侧)分别从左右边界向中间逼近,当i>=x时,i停止移动,j开始逼近当i>=x并且j<=x时,交换两个指针所指的数的数值,开启下一轮迭代直到i与j分别越过中间数(i在j右侧)开启下一轮快速排序(递归quick_sort分割数组寻找不同的x)最后使得数组排序完毕·注意数......
  • 53_初识搜素引擎_上机动手实战如何定制搜索结果的排序规则
    1、默认排序规则默认情况下,是按照_score降序排序的然而,某些情况下,可能没有有用的_score,比如说filterGET/_search{"query":{"bool":{"filter":{"term":{"author_id":1}}}}}当然,也可以是constant_scoreGET/_search{"query"......
  • 54_初识搜索引擎_解密如何将一个field索引两次来解决字符串排序问题
    如果对一个stringfield进行排序,结果往往不准确,因为分词后是多个单词,再排序就不是我们想要的结果了通常解决方案是,将一个stringfield建立两次索引,一个分词,用来进行搜索;一个不分词,用来进行排序PUT/website{"mappings":{"article":{"properties":{"title":{"type":"t......
  • pbootcms列表页排序切换(时间/浏览量/推荐…)
    为了让PBootCMS列表页支持多种排序方式,并且在点击按钮时能够切换排序方式,可以通过给URL添加参数并在前端标签中进行判断来实现。以下是详细的实现步骤和代码示例。实现步骤添加按钮中的URL参数在列表调用标签中处理排序参数整合代码详细步骤1.添加按钮中的URL参数在按钮......