首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

求问这两个循环用的是什么算法解决办法

2013-07-16 
求问这两个循环用的是什么算法while((head * 2) last){ // shift downint child head * 2if((child

求问这两个循环用的是什么算法


while((head * 2) <= last)
{ // shift down
int child = head * 2;
if((child + 1) <= last && open[child + 1]->getf() < open[child]->getf())
child++;
if(open[head]->getf() <= open[child]->getf())
break;

AstarItem* temp = open[child];
open[child] = open[head];
open[head]  = temp;

head = child;
}


while(last > 1)
{
int half = last / 2;
if(open[half]->getf() <= open[last]->getf())
{
break;
}
AstarItem* temp = open[last];
open[last] = open[half];
open[half] = temp;

last = half;
}


排序的感觉.又感觉排不全。求算法名就行,我自己去找详细的。。。。。 算法
[解决办法]
第一个是最小堆
[解决办法]
两个都是堆啊,一个是下沉一个是上浮。

热点排行