当前位置: 首页 > news >正文

海丰网站建设北京旅游网站建设公司

海丰网站建设,北京旅游网站建设公司,西安竞价推广托管,即墨网站开发公司一、二叉树的节点和深度关系 1.满二叉树 我们可以假设二叉树有N个节点,深度为h我们可以恒容易得到满二叉树每行的节点数,然后错位相减,算出节点与高度的关系。 2.完全二叉树 注意我这个是因为最后一行的节点数为1。 二、向上调整建堆和向下调整建堆的时…

一、二叉树的节点和深度关系

1.满二叉树

我们可以假设二叉树有N个节点,深度为h我们可以恒容易得到满二叉树每行的节点数,然后错位相减,算出节点与高度的关系。

2.完全二叉树

注意我这个是因为最后一行的节点数为1。

二、向上调整建堆和向下调整建堆的时间复杂度差异

1.向上调整建堆

现在我们有一个数组,我们要让它向上调整建堆

我们知道时间复杂度考虑的是最坏情况,现在我们来思考每一层向上调整需要的次数:

第一次不需要,第二层最多一次,以此类推,我们能退出以下关系式:

也就是:

2.向下调整建堆        

我们可以想象一下:

深度为h时,第一层每个节点的最大调整次数时h-1

深度为h时,第二层每个节点的最大调整次数时h--2

深度为h时,第三层每个节点的最大调整次数时h--3

深度为h时,第四层每个节点的最大调整次数时h--4

以此类推,倒数第二层每个节点的最大调整次数为1

最后一层每个节点的最大调整次数为0

因此我们可以得到这样一个关于它的时间复杂度

F(h)=2^(h-1)+2^(h-2)*2+.....+2^3*(h-3)+2^2*(h-2)+2^1*(h-1)

我们可以通过错位相减法,可以得到。

F(h)=2^(h-1)+2^(h-2)+2^(h-3)+....+2^2+2^1-(h-1)

F(N)=N-log(N+1)

通过与向上调整建堆,我们不难得到,这种情况下.向下调整建堆的效果更好.

三、堆的使用与堆排序

现在我们我思考如果我有这样的一个数组:

{0,3,1,4,6,9,2,7,5,8},如果我们要用堆让它完成一个升序的排列,我们应该选择建大堆还是建小堆呢?不少人可能会选择建小堆,但是如果我们完成了小堆,我们会发现:

我们只取出了最小值,很明显,这种方法是不行的。

所以这里我们选择建大堆。

void AdjustDown(HPDataType* a, int n, int parent)
{int child = parent * 2 + 1;while (child < n){// 假设法,选出左右孩子中小的那个孩子if (child+1 < n && a[child + 1] > a[child]){++child;}if (a[child] > a[parent]){Swap(&a[child], &a[parent]);parent = child;child = parent * 2 + 1;}else{break;}}
}
void Swap(HPDataType* px, HPDataType* py)
{HPDataType tmp = *px;*px = *py;*py = tmp;
}
void HeapSort(int* a, int n)
{for (int i = (n-1-1)/2; i >= 0; --i){AdjustDown(a, n, i);}int end = n - 1;while (end > 0){Swap(&a[0], &a[end]);AdjustDown(a, end, 0);--end;}
}

而这种操作我们也称之为堆排序。

http://www.yayakq.cn/news/976133/

相关文章:

  • 符合网络营销的网站美容美发网站建设方案
  • wordpress建站访问提示不安全东莞厚街国际大酒店
  • 网站目标定位分析国外包装设计网站大全
  • 手机网站开发有前途莱芜户型优化培训
  • 苏州做网站要多少钱怎么开网店
  • 去哪个网站做兼职百度搜索数据统计
  • 做网站备案需要哪些材料网站策划的具体内容是什么
  • 热 动漫-网站正在建设中-手机版织梦 网站教程
  • 网站做竞价对seo有影响吗南京做网站营销
  • 科讯网站模版网个人网站建设概述
  • phpcms获取网站访问量行业前10的网站建设
  • html5微网站源码网站开发一年费用总计
  • 上海营销型企业网站温州市名城建设集团有限公司网站
  • 新乡企业网站排名优化老师找学生做网站是什么心态
  • 微信微网站模板下载批量上传网站产品
  • 手机怎么做网站卖东西网站动态加速
  • 网站建设的硬件平台企业不做网站
  • 宝安网站设计哪家好论文一区二区三区是什么意思
  • yellow网站推广联盟内设网站
  • 做网站怎样赚到钱wordpress产品展示模板
  • 网站开发w亿玛酷1流量订制seo优化网络
  • 网站界面设计形考任务手机app开发编程自学
  • 诗人做的网站c2c平台的特点
  • 万维网网站续费开发大型网站的流程
  • 企业网站免费建站分析网站外链分析工具
  • 建设工程人力资源网查询平台赣州seo公司
  • 做推广的网站带宽需要多少商标注册查询设计类型 vi设计生成
  • 外贸网站建设科技wordpress读取新闻
  • 网站设计 做鼠标效果怎么自己做模板网站
  • wp网站建设app软件开发公司怎么选