当前位置:首页 > 日记 > 正文

PHP堆排序原理及应用方法

PHP堆排序原理及应用方法
本文介绍了PHP堆排序的原理和应用,供大家参考,具体分析如下:

下面是用PHP作为描述语言的堆排序原则的更详细的解释。由于程序的可读性,没有进行优化,PHP程序中关于堆的一些概念如下:

假设n是当前数组的关键,母的N是N>>1或n / 2(分);左子节点为N = N << 1或L = N×2,和N的右子节点是r(n<<1)。

$ ARR =阵列(1,8,7,2,3,4,6,5,9);

该数组ARR原配置如下:



/

八十七
二千三百四十六

/

五十九

堆排序($ ARR);print_r($ ARR);

排序后生成标准的小顶堆结构如下:



/

二十三
四千五百六十七

/

八十九

数组:数组(1,2,3,4,5,6,7,8,9):

复制代码如下:功能排序($ ARR)

{

对于一个最后元/

美元上=计数($ ARR);

/ /堆排序是忽视美元的ARR { 0 }

array_unshift($ ARR,0);

/最后一个非叶节点

$ $ =最后$ > 1;
组织成大的堆顶,最大数量的堆顶,和最大数和桩尾交换,并计算在忽略数组的最大数(最后),直到桩底(最后=桩)。

虽然(真实)

{

Adjustnode(合我,最后美元美元,ARR);

如果($ 1)

{

移动节点指针遍历所有非叶节点

一美元—;

}

其他的

{

/临界点最后= 1,所有排序

如果($ = 1)中断;

/ /当我1每次堆栈将最大数量的整理说(栈顶,$ ARR { 1 }),在根节点反复调整堆

互换(ARR {一}美元美元美元,ARR { 1 });

在数组的结尾按大小保留最大数,定义最后一个临界点,以避免堆后打乱好数组元素的后面排列。

最后一美元--;

}

}

第一个数组元素

array_shift($ ARR);

}
完成当前树节点($ n),在临界点最后一个元素的顺序很好。

功能adjustnode(N亿美元,美元,美元,ARR)

{

$ l = n <<1;左子$

如果(!isset($ ARR { $ L })|美元美元| L >最后)返回;

$ = $ l + 1;右边的子项为
如果孩子比孩子左到右,那么让正确的子节点比父节点

如果($r$ ARR { $ L })$ = $ r;

如果中子l / L l节点比父节点$ n,那么与父节点交换$ n

如果($ ARR { $ L } > { } ARR美元美元)

{

子节点($ l)和交换的父节点(n)值的值。

互换($ ARR { $ L },{ } ARR美元美元);

交换/父节点(N)值($ ARR { $ n })可能小于原子节点($ L)节点的值,所以需要原子节点($ L)节点调整使用递归

Adjustnode(l美元美元美元,去年,ARR);

}

}
两个/交换值

函数交换($ A,b)

{

$ =;

美元=;

$ =;

}

希望本文能对大家的PHP程序设计有所帮助。

相关文章

PS图象处理软件将一个奇妙的说明孩

PS图象处理软件将一个奇妙的说明孩

图象,蜘蛛,处理软件,奇妙,孩子,本教程介绍给朋友,谁使用PS图象处理软件为孩子坐在宠物蜘蛛,画一个美妙的图解法。教程中的插图非常令人惊异,对人很好,给人一种回归孩子的感觉。建议你最喜欢的朋友一起学习。 本教程介绍给朋友,谁使用PS图象处理…

本文介绍了四种PS消光方法。

本文介绍了四种PS消光方法。

方法,四种,本文,电脑软件,PS,以下小四种方法介绍PS抠图,教程比较基础,适合初学者学习,推荐给朋友,希望对你有帮助。 在设计中必然要把一幅图画和另一幅画的一部分画在一起。所以,用PS这个功能不可避免的抠图,下面小到四种方法介绍PS抠图,教程比较…

PHP包含类文件超时问题处理

PHP包含类文件超时问题处理

超时,类文件,电脑软件,PHP,最近,PHP发现当运行自动加载类函数时,PHP总是超时。它跟踪了包含的慢查询日志,发现程序在类文件中超时。 初始定位是IO响应超时,硬盘读有问题。 通过几个命令定位: iostat -d x k / / 110运行10次查看等待iostat参…

jQuery的增加、删除、修改和选中操

jQuery的增加、删除、修改和选中操

操作,删除,修改,选择,电脑软件,有四种操作:增加、删除、更改和检查。 {增加}: 复制代码代码如下所示: $(# select_id)。追加(文本); / /选择添加一个选项(下拉) $(# select_id)。Prepend(选择); / /插入选项选择(第一位置) {删除}: 复制代码代码如下所示: …

PS快速制作多彩马赛克背景

PS快速制作多彩马赛克背景

多彩,背景,快速,电脑软件,PS,本教程是介绍给朋友的,利用ps快速创建精美多彩的马赛克背景方法。马赛克的背景真的很好,我建议你喜欢你的朋友一起学习。 本教程主要是向大家介绍利用ps快速制作精美、多彩的马赛克背景方法。教程很好,而且马赛克…

在DreamweaverCS3轻快的自定义验证

在DreamweaverCS3轻快的自定义验证

验证,自定义,轻快,代码,电脑软件,在过去的两天里,使用了Dreamweaver CS3 Spry组件。发现它可以自动验证的输入。它更方便,它有一些内置的验证,如数字验证字符串验证,邮政编码验证,数据验证,等等。 然而,缺点是它的一些内置的验证是不是很实用,在中…

画家手绘帅哥漫画

画家手绘帅哥漫画

手绘,画家,帅哥,漫画,电脑软件,本教程是给你介绍画家手绘的帅哥漫画,而且效果非常漂亮。作者仍然是狼兽,感谢他的原创分享。推荐给大家,希望各位朋友喜欢这个教程。 本教程是给你介绍画家手绘的帅哥漫画,而且效果非常漂亮。作者仍然是一只狼兽,…

基于复选框的复选框不选中反选举功

基于复选框的复选框不选中反选举功

复选框,功能,电脑软件,此代码是选中了大量的jQuery复选框函数代码,该代码在我的项目中使用,这里分享。 jQuery代码: 复制代码代码如下所示: $(函数(){()) $(# checkedall)。Click(function(){) $({姓名} =项目:复选框)。Attr('checked ',真的); }); $(# chec…

浅谈javascript数学和数字对象

浅谈javascript数学和数字对象

数字对象,浅谈,数学,电脑软件,javascript,1。数学的对象 1.1引言 数学对象是提供数学对象、数学计算的数据,如获得绝对值、取整等。没有构造函数,不能初始化,只提供静态属性和方法。 1.2构造函数 不:数学对象没有构造函数,不能初始化,只提供静…

超强纹理的人工智能设计

超强纹理的人工智能设计

人工智能,纹理,电脑软件,本教程是向朋友介绍如何使用AI设计超强纹理的3D字符处理。教程的效果很好,建议大家过来看看,希望能对大家有所帮助。 本教程是为朋友如何使用AI设计的超级强大的三维特征,实际上已经在尝试使用AI做这些在他们自己的商…

大数的javascript实现

大数的javascript实现

大数,电脑软件,javascript,对于非常大或非常小的数字,浮点值可以用科学记数法来表示。通过科学记数法,一个数可以表示为一个数加上e e e,然后乘以10倍,如: 复制代码代码如下所示: VaR num1 = 3.125e7 VAR num2 = 31250000; / / / / 0 3e-17; 特殊…

PS实用技巧:对齐技巧

PS实用技巧:对齐技巧

对齐,实用技巧,技巧,电脑软件,PS,这篇文章将为你分享一个ps实用技巧。这个技能是对齐技能。我相信这是有用的朋友使用PS。教程是比较基本的,这是适合新手学习。 本教程是介绍PS对齐技巧,非常实用的技巧,希望能对你有所帮助! 以上是PS对齐技术的…