- 1、本文档共3页,可阅读全部内容。
- 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
划分树(算法总结)
LBoy-1
动态求解区间最大数的问题
揭开它神秘的面纱,探寻真理的奥妙。——小志。
这偏文章主要总结划分树解决区间第K 大数的问题。一些内容并非原创,全部内容只供参考交流!
划分树
划分树的定义
划分树定义为,她的每一个节点保存区间 lft, rht 所有元素,元素排列顺序与原数组(输入)相同,但是,
两个子树的元素为该节点所有元素排序后 rht − lft + 1 / 2个进入左子树,其余的到右子树,同时维护一个
num 域,num[i] 表示lft → i 这些点有多少进入了左子树。(摘自某牛人的博客,为了和下面的算法统一,稍
有变动)
划分树的Sample.
如果由下而上看这个图,我们就会发现他和归并排序的(归并树)的过程很类似,或者说正好相反。归并树
是由下而上的排序,而她确
实由上而下的排序(观察‘4 ’
的运动轨迹,我们可以猜到,
划分树的排序也是一种稳
定的排序方法,这里不是说
明的重点,不予证明)。但
这正是她可以用来解决第
k 大元素的理由所在。(具体
的理由,写完再补)
划分树的存储结构(采用层次存储结构(由下而上,由左到右,每层两个孩子,见上图)
using namespace std;
#define M 100001
#define md(x, y) (((x)+(y))1)
int sorted[M]; // 对原来集合中的元素排序后的值。
struct node {
int val[M]; // val 记录第k 层当前位置的元素的值
int num[M]; // num 记录元素所在区间的当前位置之前进入左孩子的个数
double sum[M]; // sum 记录比当前元素小的元素的和。
}t[20];
划分树的建立Build
划分树的建立和普通的二叉树的建立过程差不多,仍然采取中序的过程(先根节点,然后左右孩子)。
树的建立相对比较简单,我们依据的是已经排好序的位置进行建树,所以先用快排将原集合牌还序。要维护
每个节点的num 域。
void build(int lft, int rht, int p) {
if(lft == rht) return;
int i, mid = md(lft, rht);
int isame = mid - lft + 1, same = 0;
/* isame 用来标记和中间值val_mid 相等的,且分到左孩子的数的个数。
LBoy-2
初始时,假定当前区间[lft,rht]有mid-lft+1 个和val_mid 相等。
先踢掉比中间值小的,剩下的就是要插入到左边的*/
for(i = lft; i = rht; i++)
if(t[p].val[i] sorted[mid]) isame-- ;
int ln = lft, rn = mid + 1;
for(i = lft; i = rht; i++) {
if(i == lft) { // 初始一个子树。
t[p].num[i] = 0;
t[p].sum[i] = 0;
} else { // 初始区间下一个节点。
t[p].num[i] = t[p].
您可能关注的文档
- 于渌—呈展现象.pdf
- 互联网时代流量向死,移动互联时代还看场景.pdf
- 互联网金融盯上大学生推大学生分期白条.pdf
- 互联网高利贷盯上高校学生 借款成本最高35%.doc
- 亚马逊送货还盯上了送报纸的卡车,电商送货还能操什么心?.pdf
- 交易区间46.34-47.47美元。.PDF
- 交水稻旱育稀植栽培技术(已修改).doc
- 产后妊辰纹消除,产后如何去妊辰纹.docx
- 产后补血喝什么汤?妈咪们补血要“盯”准6种汤.pdf
- 五辰鸿道教育产业集团梦想板.ppt
- 2025年广西中考地理二轮复习:专题四+人地协调观+课件.pptx
- 2025年广西中考地理二轮复习:专题三+综合思维+课件.pptx
- 2025年中考地理一轮教材梳理:第4讲+天气与气候.pptx
- 第5讲+世界的居民课件+2025年中考地理一轮教材梳理(商务星球版).pptx
- 冀教版一年级上册数学精品教学课件 第1单元 熟悉的数与加减法 1.1.6 认识1-9 第6课时 合与分.ppt
- 2025年中考一轮道德与法治复习课件:坚持宪法至上.pptx
- 2025年河北省中考一轮道德与法治复习课件:崇尚法治精神.pptx
- 八年级下册第二单元+理解权利义务+课件-2025年吉林省中考道德与法治一轮复习.pptx
- 精品解析:湖南省娄底市2019-2020学年八年级(上)期中考试物理试题(原卷版).doc
- 2025年中考地理一轮教材梳理:第10讲+中国的疆域与人口.pptx
文档评论(0)