如何实现优先队列?

maoxing63570 2010-03-06 11:45:46
请大家给个简单的代码,因为我初学这个东西.谢谢!
...全文
136 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
绿色夹克衫 2010-03-09
  • 打赏
  • 举报
回复
以前写的大根堆程序。

public enum HeapType
{
MaxHeap = 1,
MinHeap = -1
}

//建堆(大根堆或小根堆)
public static void BuildHeap(T[] items, HeapType heapType)
{
for (int i = items.Length >> 1; i >= 0; i--)
HeapifyArray(items, i, heapType);
}

//堆化数组
public static void HeapifyArray(T[] items, int index, HeapType heapType)
{
int i = index;
int left = (index << 1) + 1;
int right = (index << 1) + 2;

if (left < items.Length && items[left].CompareTo(items[i]) * (int)heapType > 0)
i = left;

if (right < items.Length && items[right].CompareTo(items[i]) * (int)heapType > 0)
i = right;

if (i != index)
{
SwapItem(items, index, i);
HeapifyArray(items, i, heapType);
}
}

public static void SwapItem(T[] items, int indexA, int indexB)
{
T value = items[indexA];
items[indexA] = items[indexB];
items[indexB] = value;
}
guyehanxinlei 2010-03-09
  • 打赏
  • 举报
回复
Friendly Up!
guyehanxinlei 2010-03-09
  • 打赏
  • 举报
回复
Friendly Up!
feile922 2010-03-09
  • 打赏
  • 举报
回复
feihao hao
phl1025 2010-03-09
  • 打赏
  • 举报
回复
看你怎么样的队列了,如果有个优先级参数,那不就很容易了,或者用个ID什么的,如果你的队列是类结构的,那就不用说了,如果是数组结构的,那就用优先级算法
z247599213 2010-03-07
  • 打赏
  • 举报
回复
怎么给你说呢!要知道队列,代码都好些。
在我看来你首先要懂得队列是怎么回事,如何形成队列的。这才是最关重要的。
在现实生活中队列的例子很多。
比如。在火车站买票时。我们是不是要站成一个队啊,一个买完了出去了下一个人才能买票才能出去啊。
只有一个“进队口”和“出队口”吧!这样就行成了一个队列。

自己在想几个例子吧!好好理解下队列!
在Java中 系统就提供了一个队列的的实现类,在 LIST接口的实现类中
maoxing63570 2010-03-07
  • 打赏
  • 举报
回复
可以给个详细点的例子么,你说的那个例子我在搜索的时候就找到了,但是我看不懂,谢谢!
绿色夹克衫 2010-03-07
  • 打赏
  • 举报
回复
直接用SortedDictionary就可以,如果是用大根堆模拟的话,可以看看空军的博客

http://www.cnblogs.com/skyivben/archive/2009/04/18/1438731.html

110,571

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术 C#
社区管理员
  • C#
  • Web++
  • by_封爱
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

让您成为最强悍的C#开发者

试试用AI创作助手写篇文章吧