读书人

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

发布时间: 2013-07-16 22:38:05 作者: rapoo

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


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;
}


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

读书人网 >C++

热点推荐