hiii我试图使用相同的队列对队列进行排序我认为它应该可以工作但它不会......它丢失了一些元素......任何想法?这是代码
public void sort()
{
for(int i=1; i<size; i++)
{
Vertex tmp1=dequeue();
Vertex tmp2=dequeue();
Vertex max=tmp1;
for(int j=1; j<size; j++)
{
if(tmp1.weight <= tmp2.weight)
{
enqueue(tmp1);
tmp1=dequeue();
max=tmp2;
} else {
max=tmp1;
enqueue(tmp2);
tmp2=dequeue();}
}
enqueue(max);
}
}
}
答案 0 :(得分:0)
它失去了一些元素......任何想法?
您丢失元素的原因是,您拨打dequeue()
次的次数超过了致电enqueue()
的次数:
Vertex tmp1=dequeue();
Vertex tmp2=dequeue();
...
enqueue(max);
在上文中,您针对一个dequeue()
次调用进行了两次enqueue()
次调用(因为它们完全平衡,所以我不包括来自内部循环的调用)。