接收数据的最佳排序方法

本文关键字:排序 方法 最佳 数据 | 更新日期: 2023-09-27 18:12:25

在我的程序中,我将接收数据元组:(Value, Order)。我想对列表或字典中的所有元组按Order升序排序。我在while循环中一个接一个地得到元组。

对元组进行排序的最有效方法是什么?我想过在我一个接一个地接收元组时对它们进行排序,然后将它们插入列表或字典中;或者我可以先将所有元组收集到一个列表或字典中,然后对它们进行排序。这些方法中哪一个是最好的?

而且,我不确定列表或字典是否最适合存储这些信息,或者使用两者之间是否有显着差异。

编辑:我应该注意,排序后,我需要产生所有的Value s的字符串。

接收数据的最佳排序方法

您可以对SortedDictionary类感兴趣:

 SortedDictionary<string, string> dict = 
        new SortedDictionary<string, string>();

如MSDN所示:

SortedDictionary有(…)对未排序数据的插入和删除操作:O(log n)

所以它将比添加所有元组然后以O(n log n)复杂度排序它们要快。

您可以使用SortedDictionary,它很可能会比您更快地完成工作。数据结构的类型取决于您如何访问或查询数据

您可以使用SortedList或SortedDictionary。这里解释了它们的区别。

SortedDictionary泛型类是一个二进制搜索树的检索次数为O(log n),其中n是字典。在这方面,它类似于SortedList泛型类。这两个类具有相似的对象模型,并且都有O(log n)的检索。这两类的区别在哪里内存使用和插拔速度:

•SortedList使用的内存比SortedDictionary少。

•SortedDictionary具有更快的插入和删除对于未排序数据的操作:O(log n)而不是O(nSortedList .

•如果列表是一次性从排序数据填充的,SortedList比SortedDictionary快。

每个键/值对都可以作为KeyValuePair检索结构,或通过非泛型字典作为DictionaryEntry接口。

键必须是不可变的,只要它们在SortedDictionary。SortedDictionary中的每个键必须是唯一的。键不能为空,但值可以为空TValue是一个引用类型。

SortedDictionary需要比较器实现执行键比较。的实现的构造函数,该构造函数接受比较器参数;如果未指定实现,则默认的通用比较器。使用默认值。如果输入TKey实现系统。iccomparable泛型接口,默认比较器使用该实现。