如何不是使用LINQ而是使用BubbleSort对字典中的两个整数进行排序

本文关键字:两个 排序 整数 LINQ 何不 BubbleSort 字典 | 更新日期: 2023-09-27 18:25:41

我正在尝试使用buble排序对Dictionary进行排序。问题是我想保留键。例如:

我的字典是这样的:

{[0,5],[1,2],[2,3],[3,1],[4,9]}

在使用Bubble Sort之后,我应该有这样的字典:

{[3,1],[1,2],[2,3],[0,5],[4,9]}

这可能吗?

如何不是使用LINQ而是使用BubbleSort对字典中的两个整数进行排序

Dictionary没有顺序的概念(参见Dictionary中元素的顺序),因此它们本身无法排序。你给的两本字典是对等的。

相反,您可以创建一个键值对列表,并实现BubbleSort来只比较每个对的第二个元素。像这样,但使用Bubblesort而不是OrderBy:

var sample = new Dictionary<int, int>
{
    {0,5},
    {1,2},
    {2,3},
    {3,1},
    {4,9}
};
var keyValuePairs = sample.Select(p => new Tuple<int, int>(p.Key, p.Value)).ToList();
var sortedKeyValuePairs = keyValuePairs.OrderBy(t => t.Item2);