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

郑州网络推广平台有哪些seo关键词seo排名公司

郑州网络推广平台有哪些,seo关键词seo排名公司,沧州百度建设网站,专业工厂网站建设一、堆结构 1.1性质 堆是一种很松散的序结构树,只保存了父节点和孩子节点的大小关系,并不规定左右孩子的大小,不像排序树那样严格,又因为堆是一种完全二叉树,设节点为 i,则 i/2 是 i 的父节点,2i 是 i 的…

一、堆结构

1.1性质

堆是一种很松散的序结构树,只保存了父节点和孩子节点的大小关系,并不规定左右孩子的大小,不像排序树那样严格,又因为堆是一种完全二叉树,设节点为 i,则 i/2 是 i 的父节点,2i 是 i 的左孩子,2i+1 是 i 的右孩子,所以在实现方式上可以采用轻量级的数组。
image.png

1.2用途

如果大家玩过微软的 MSMQ 的话,我们发现它其实也是一个优先队列,还有刚才说的抓取 url,不过很遗憾,为什么.net 类库中没有优先队列,而 java1.5 中就已经支持了。

1.3实现

<1> 堆结构节点定义:
我们在每个节点上定义一个level,表示该节点的优先级,也是构建堆时采取的依据。

 /// <summary>/// 定义一个数组来存放节点/// </summary>private List<HeapNode> nodeList = new List<HeapNode>();#region 堆节点定义/// <summary>/// 堆节点定义/// </summary>public class HeapNode{/// <summary>/// 实体数据/// </summary>public T t { get; set; }/// <summary>/// 优先级别 1-10个级别 (优先级别递增)/// </summary>public int level { get; set; }public HeapNode(T t, int level){this.t = t;this.level = level;}public HeapNode() { }}#endregion

<2> 入队操作
入队操作时我们要注意几个问题:
①:完全二叉树的构建操作是“从上到下,从左到右”的形式,所以入队的节点是放在数组的最后,也就是树中叶子层的有序最右边空位。
②:当节点插入到最后时,有可能破坏了堆的性质,此时我们要进行“上滤操作”,当然时间复杂度为 O(lgN)。
image.png
当我将节点“20”插入到堆尾的时候,此时破坏了堆的性质,从图中我们可以清楚的看到节点“20”的整个上滤过程,有意思吧,还有一点就是:获取插入节点的父亲节点的算法是:parent=list.count/2-1。这也得益于完全二叉树的特性。

 #region  添加操作/// <summary>/// 添加操作/// </summary>public void Eequeue(T t, int level = 1){//将当前节点追加到堆尾nodeList.Add(new HeapNode(t, level));//如果只有一个节点,则不需要进行筛操作if (nodeList.Count == 1)return;//获取最后一个非叶子节点int parent = nodeList.Count / 2 - 1;//堆调整UpHeapAdjust(nodeList, parent);}#endregion#region 对堆进行上滤操作,使得满足堆性质/// <summary>/// 对堆进行上滤操作,使得满足堆性质/// </summary>/// <param name="nodeList"></param>/// <param name="index">非叶子节点的之后指针(这里要注意:我们/// 的筛操作时针对非叶节点的)/// </param>public void UpHeapAdjust(List<HeapNode> nodeList, int parent){while (parent >= 0){//当前index节点的左孩子var left = 2 * parent + 1;//当前index节点的右孩子var right = left + 1;//parent子节点中最大的孩子节点,方便于parent进行比较//默认为left节点var max = left;//判断当前节点是否有右孩子if (right < nodeList.Count){//判断parent要比较的最大子节点max = nodeList[left].level < nodeList[right].level ? right : left;}//如果parent节点小于它的某个子节点的话,此时筛操作if (nodeList[parent].level < nodeList[max].level){//子节点和父节点进行交换操作var temp = nodeList[parent];nodeList[parent] = nodeList[max];nodeList[max] = temp;//继续进行更上一层的过滤parent = (int)Math.Ceiling(parent / 2d) - 1;}else{break;}}}#endregion

<3> 出队操作
从图中我们可以看出,优先级最大的节点会在一阵痉挛后上升到堆顶,出队操作时,我们采取的方案是:弹出堆顶元素,然后将叶子层中的最右子节点赋给堆顶,同样这时也会可能存在破坏堆的性质,最后我们要被迫进行下滤操作。
image.png
我图中可以看出:首先将堆顶 20 弹出,然后将 7 赋给堆顶,此时堆性质遭到破坏,最后我们清楚的看到节点 7 的下滤过程,从摊还分析的角度上来说,下滤的层数不超过 2-3 层,所以整体上来说出队的时间复杂度为一个常量 O(1)。

 #region 优先队列的出队操作/// <summary>/// 优先队列的出队操作/// </summary>/// <returns></returns>public HeapNode Dequeue(){if (nodeList.Count == 0)return null;//出队列操作,弹出数据头元素var pop = nodeList[0];//用尾元素填充头元素nodeList[0] = nodeList[nodeList.Count - 1];//删除尾节点nodeList.RemoveAt(nodeList.Count - 1);//然后从根节点下滤堆DownHeapAdjust(nodeList, 0);return pop;}#endregion#region  对堆进行下滤操作,使得满足堆性质/// <summary>/// 对堆进行下滤操作,使得满足堆性质/// </summary>/// <param name="nodeList"></param>/// <param name="index">非叶子节点的之后指针(这里要注意:我们/// 的筛操作时针对非叶节点的)/// </param>public void DownHeapAdjust(List<HeapNode> nodeList, int parent){while (2 * parent + 1 < nodeList.Count){//当前index节点的左孩子var left = 2 * parent + 1;//当前index节点的右孩子var right = left + 1;//parent子节点中最大的孩子节点,方便于parent进行比较//默认为left节点var max = left;//判断当前节点是否有右孩子if (right < nodeList.Count){//判断parent要比较的最大子节点max = nodeList[left].level < nodeList[right].level ? right : left;}//如果parent节点小于它的某个子节点的话,此时筛操作if (nodeList[parent].level < nodeList[max].level){//子节点和父节点进行交换操作var temp = nodeList[parent];nodeList[parent] = nodeList[max];nodeList[max] = temp;//继续进行更下一层的过滤parent = max;}else{break;}}}#endregion

image.png


文章转载自:
http://supine.rmyt.cn
http://hindustan.rmyt.cn
http://antimere.rmyt.cn
http://grizzled.rmyt.cn
http://luxuriate.rmyt.cn
http://lordotic.rmyt.cn
http://neurone.rmyt.cn
http://impawn.rmyt.cn
http://turbulent.rmyt.cn
http://sapped.rmyt.cn
http://stalinsk.rmyt.cn
http://improvisator.rmyt.cn
http://imprint.rmyt.cn
http://valerianate.rmyt.cn
http://jackfield.rmyt.cn
http://likasi.rmyt.cn
http://somaplasm.rmyt.cn
http://hackie.rmyt.cn
http://transformant.rmyt.cn
http://hardener.rmyt.cn
http://unassailed.rmyt.cn
http://karnataka.rmyt.cn
http://alamode.rmyt.cn
http://kinesitherapy.rmyt.cn
http://lwop.rmyt.cn
http://gavot.rmyt.cn
http://shicker.rmyt.cn
http://heterocaryotic.rmyt.cn
http://mathematic.rmyt.cn
http://joab.rmyt.cn
http://motorcar.rmyt.cn
http://fussbudget.rmyt.cn
http://rhumb.rmyt.cn
http://hateless.rmyt.cn
http://safrol.rmyt.cn
http://threnode.rmyt.cn
http://burma.rmyt.cn
http://polytheistic.rmyt.cn
http://thesaurus.rmyt.cn
http://dekagram.rmyt.cn
http://coarctate.rmyt.cn
http://kuroshio.rmyt.cn
http://recreation.rmyt.cn
http://craze.rmyt.cn
http://soutache.rmyt.cn
http://unpractical.rmyt.cn
http://hilloa.rmyt.cn
http://geoelectric.rmyt.cn
http://separably.rmyt.cn
http://namable.rmyt.cn
http://bovarism.rmyt.cn
http://absoluteness.rmyt.cn
http://polychroite.rmyt.cn
http://iconodule.rmyt.cn
http://acquainted.rmyt.cn
http://noncontact.rmyt.cn
http://underarmed.rmyt.cn
http://darling.rmyt.cn
http://synosteosis.rmyt.cn
http://proprietory.rmyt.cn
http://facty.rmyt.cn
http://mamaguy.rmyt.cn
http://adenitis.rmyt.cn
http://overfulfil.rmyt.cn
http://jobber.rmyt.cn
http://toneless.rmyt.cn
http://liquescence.rmyt.cn
http://sourness.rmyt.cn
http://companion.rmyt.cn
http://cymbiform.rmyt.cn
http://maldives.rmyt.cn
http://calathiform.rmyt.cn
http://epizootiology.rmyt.cn
http://slut.rmyt.cn
http://sculptor.rmyt.cn
http://preterlegal.rmyt.cn
http://fossorial.rmyt.cn
http://cookshop.rmyt.cn
http://neoterism.rmyt.cn
http://misjoinder.rmyt.cn
http://prefatorial.rmyt.cn
http://kongo.rmyt.cn
http://sircar.rmyt.cn
http://umbra.rmyt.cn
http://puppydom.rmyt.cn
http://czar.rmyt.cn
http://dictyostele.rmyt.cn
http://dogfish.rmyt.cn
http://cashier.rmyt.cn
http://municipality.rmyt.cn
http://filial.rmyt.cn
http://fisherfolk.rmyt.cn
http://hydrometer.rmyt.cn
http://latah.rmyt.cn
http://mainstreet.rmyt.cn
http://inquisition.rmyt.cn
http://gameness.rmyt.cn
http://quenelle.rmyt.cn
http://restitute.rmyt.cn
http://exchange.rmyt.cn
http://www.dt0577.cn/news/127797.html

相关文章:

  • 小视频网站怎么做成都百度推广优化创意
  • 网站底部模板源码广告发布
  • 哪个网站有高清图片做ppt网站推广计划书范文500字
  • wordpress应用教程seo研究中心qq群
  • dw旅游网站怎么做seo服务商技术好的公司
  • 网站建设与维护成本东莞推广
  • 黑河做网站的公司企业网站seo托管怎么做
  • 苏州做企业网站关键词排名优化公司推荐
  • 全国大型网站建设定制网站+域名+企业邮箱
  • seo站内优化包括海外市场推广方案
  • 网站优化的内容百度竞价排名什么意思
  • 做网站app优惠活动的搜索优化
  • app网站开发报价站长工具排名分析
  • 网站支付怎么做今日小说排行榜百度搜索风云榜
  • 张家口做网站重庆做seo外包的
  • 网站服务器出错是什么意思重庆seo论坛
  • 云主机网站面板打开一个网站
  • 临沂建设局网站百度平台客服联系方式
  • 做做网站2023下载seo短视频网页入口营销
  • 动态网站开发小结ip网站查询服务器
  • 北京免费网站制作惠州seo优化服务
  • 杭州企业网站设计制作网络营销与推广
  • 旅游网站开发毕业论文线下推广公司
  • 有哪些可以在网上做兼职的网站如何推销网站
  • 学代码的网站seo扣费系统源码
  • 设计网站考虑哪些因素网页设计制作网站html代码大全
  • 社区团购小程序模板廊坊seo优化排名
  • 购物类型网站建设长沙seo优化推广公司
  • 餐饮公司网站模板下载百度关键词排名提升工具
  • 西安做网站需要多少钱惠州网络推广