Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/307.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/postgresql/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 我应该使用二进制堆吗?_C#_Linked List_Nodes_Binary Heap - Fatal编程技术网

C# 我应该使用二进制堆吗?

C# 我应该使用二进制堆吗?,c#,linked-list,nodes,binary-heap,C#,Linked List,Nodes,Binary Heap,跟进问题来自: 摘要: 我请求帮助改进我的寻路代码(A*)。一位用户很快发现,我对一个特定的节点列表进行了大量排序,并且使用IComparible进行排序——显然效率很低。他建议使用订购包,但是,我必须自己编写所有代码,不能使用来自互联网的代码 问题是:那么,在仍然能够快速添加和删除数据的情况下,创建二进制堆是维护有序数据的最有效方法吗。如果是这样的话,是否有人有任何链接指向我创建一个的正确方向,以及创建哪一个 我听说过LinkedList-好主意?LinkedList是个坏主意,尤其是在排序方

跟进问题来自:

摘要: 我请求帮助改进我的寻路代码(A*)。一位用户很快发现,我对一个特定的节点列表进行了大量排序,并且使用IComparible进行排序——显然效率很低。他建议使用订购包,但是,我必须自己编写所有代码,不能使用来自互联网的代码

问题是:那么,在仍然能够快速添加和删除数据的情况下,创建二进制堆是维护有序数据的最有效方法吗。如果是这样的话,是否有人有任何链接指向我创建一个的正确方向,以及创建哪一个


我听说过LinkedList-好主意?

LinkedList是个坏主意,尤其是在排序方面。如果您不想使用OrderedBag,请尝试使用SortedDictionary。LinkedList是个坏主意,尤其是在排序时。如果您不想使用OrderedBag,请尝试使用SortedDictionary。如果您将自己的包作为练习滚动,那么是的,堆是构建有效优先级队列的正确数据结构。从二进制堆开始,因为它相当简单。如果有时间和意愿,您可以稍后尝试更复杂的堆

推荐场外资源的问题与主题无关。简单算法和数据结构的标准打印源是。但是现在维基百科也是一个很好的伪代码源。(请注意;您需要一个最小堆。考虑如何在给定最大堆代码的情况下构建最小堆是一个很好的练习。)


对于
A*

如果您将自己的应用程序作为一个练习,那么是的,堆是构建有效优先级队列的正确数据结构。从二进制堆开始,因为它相当简单。如果有时间和意愿,您可以稍后尝试更复杂的堆

推荐场外资源的问题与主题无关。简单算法和数据结构的标准打印源是。但是现在维基百科也是一个很好的伪代码源。(请注意;您需要一个最小堆。考虑如何在给定最大堆代码的情况下构建最小堆是一个很好的练习。)


对于
A*

???他建议您使用
我已经尝试了一些有序列表实现,但是Wintellect的PowerCollections中的OrderedBag类是我最喜欢的。
,所以。这意味着什么?
我必须自己编写所有代码。
?这可能很有趣:@xanatos PowerCollections是现成的代码,我没有努力-对吗?@ShivamMalhotra这是一个开源库。@xanatos仍然不是我的代码????他建议您使用
我已经尝试了一些有序列表实现,但是Wintellect的PowerCollections中的OrderedBag类是我最喜欢的。
,所以。这意味着什么?
我必须自己编写所有代码。
?这可能很有趣:@xanatos PowerCollections是现成的代码,我不需要努力-对吗?@ShivamMalhotra这是一个开源库。@xanatos仍然不是我的代码?谢谢,但SortedDictionary也有同样的问题。它已经制作好了。这是我能自己做的吗?谢谢,但是SortedDictionary也有同样的问题。它已经制作好了。这是我能自己做的吗?