设为首页
收藏本站
用户名
Email
自动登录
找回密码
密码
登录
立即注册
只需一步,快速开始
快捷导航
登录
注册
论坛首页
BBS
建站模版
微站设计
虚拟主机
企业邮箱
博客日志
Blog
搜索
搜索
搜索
热搜
长春
优惠
活动
做网站
本版
帖子
用户
本版
帖子
用户
请
登录
后使用快捷导航
没有帐号?
立即注册
道具
勋章
任务
留言板
设置
我的收藏
退出
时时商务社区
»
论坛首页
›
建站资源
›
建站技术
›
php堆排序(heapsort)练习
返回列表
查看:
1101
|
回复:
0
php堆排序(heapsort)练习
[复制链接]
yj1281
当前离线
积分
7391
2487
主题
2487
帖子
7391
积分
论坛元老
论坛元老, 积分 7391, 距离下一级还需 9992608 积分
论坛元老, 积分 7391, 距离下一级还需 9992608 积分
积分
7391
发消息
电梯直达
楼主
发表于 2018-2-14 06:02:04
|
只看该作者
|
倒序浏览
|
阅读模式
[U]复制代码[/U] 代码如下:
a=$a;
}
function runvalue($b,$c)//$a 代表数组,$b代表排序堆,$c代表结束点,
{
while($b$c)
break;
elseif($h1==$c)
{
if($this->a[$b]>$this->a[$h1])
{
$t=$this->a[$b];
$this->a[$b]=$this->a[$h1];
$this->a[$h1]=$t;
$la=1;
}
else
$la=1;
}
elseif(($this->a[$b]>$this->a[$h1])||($this->a[$b]>$this->a[$h2]))
{
if($this->a[$h1]>=$this->a[$h2])
{
$t=$this->a[$h2];
$this->a[$h2]=$this->a[$b];
$this->a[$b]=$t;
$b=$h2;
}
else
{
$t=$this->a[$h1];
$this->a[$h1]=$this->a[$b];
$this->a[$b]=$t;
$b=$h1;
}
}
else
$la=1;
if($la==1)
break;
}
}
function getarray()
{
$all=count($this->a);
$b=Floor(($all-1)/2);
for($i=$b;$i>=1;$i--)//先将数组建立成堆
{
$this->runvalue($i,($all-1));
}
for($i=1;$ia[1];
$this->a[1]=$this->a[$a1];
$this->a[$a1]=$t;
}
else
{
$end=($all-$i);
$this->runvalue(1,$end);
$t=$this->a[1];
$this->a[1]=$this->a[$end];
$this->a[$end]=$t;
}
}
return $this->a;
}
}
//////
class sortarr
{
var $a;
function setarray($a)//取得数组
{
$this->a=$a;
}
function runvalue($i)
{
$max=$this->a[$i];
$id=$i;
for($j=($i+1);$ja);$j++)
{
if($this->a[$j]>$max)
{
$max=$this->a[$j];
$id=$j;
}
}
if($id!=$i)
{
$t=$this->a[$id];
$this->a[$id]=$this->a[$i];
$this->a[$i]=$t;
}
}
function getarray()
{
for($i=1;$ia)-1);$i++)
$this->runvalue($i);
return $this->a;
}
}
//////
$s=microtime();
$st=explode(' ',$s);
$st1=$st[0];
$st2=$st[1];
//////
$v=10000;//排序数组长度
$brr[0]=0;
for($i=1;$isetarray($brr);
$ok=$arr->getarray();
for($i=1;$i($v-1))?($v-1)
$i+1));
/*
if($ok[$j]setarray($brr);
$ok=$arr->getarray();
for($i=1;$i($v-1))?($v-1)
$i+1));/*
if($ok[$j]$ok[$i])
echo'
'.$ok[$i].'
';
else
echo$ok[$i].'
';*/
}
}
elseif($check==3)
{
sort($brr);
$ok=$brr;
for($i=1;$i($v-1))?($v-1)
$i+1));/*
if($ok[$j]$ok[$i])
echo'
'.$ok[$i].'
';
else
echo$ok[$i].'
';*/
}
}
else
{
echo'参数输入错误!!
';
}
//////
$s=microtime();
$st=explode(' ',$s);
$sta=$st[0];
$stb=$st[1];
$ss1=$sta-$st1;
$ss2=$stb-$st2;
if($check==1)
$word='堆排序';
elseif($check==2)
$word='常规排序';
elseif($check==3)
$word='普通排序';
else
$word='无排序';
echo$word.'对具有'.$v.'个元素的数组排序,消耗了'.($ss2+$ss1).'秒时间';
//////
?>
您可能感兴趣的文章:
php堆排序实现原理与应用方法
PHP实现的堆排序算法详解
PHP实现排序堆排序(Heap Sort)算法
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
回复
使用道具
举报
返回列表
高级模式
B
Color
Image
Link
Quote
Code
Smilies
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
用户反馈
客户端