对基于索引的排序是否有C#支持?
是否有任何内置的C#支持进行索引排序?
更多细节:
我有几组数据存储在单个通用的double列表中。 这些列表的长度始终相等,并保存相应的数据项,但这些列表是动态来来去去的,所以我不能只是干净地将相应的数据项存储在类或结构中。 (我也在处理一些遗留问题。)
我需要能够从任何一个数据集中对这些键控进行排序。
我想到最好的方法是添加一个间接层,并使用基于索引的排序。 这种类型已经使用多年了。
基于索引的排序的快速定义:
使“index”,一个与列表长度相同的连续整数数组,然后排序算法对整数列表进行排序,以便任何anylist[index[N]]
按排序顺序给出任何列表的第N项。 列表本身永远不会被重新订购。
是否有任何内置的C#支持进行索引排序? 我一直无法找到它……我发现的所有东西都重新整理了这个系列。 我的猜测是支持存在,但我还没有找到正确的地方。
我在Windows下使用C#.NET 3.5。
设置索引数组后,可以使用自定义Comparison
对其进行排序,比较数据数组中相应项目中的值:
Array.Sort(index, (a,b) => anylist[a].CompareTo(anylist[b]));
以下代码实现了索引排序。 请注意ToArray()调用以克隆数据数组。 如果省略,数据数组也会被排序。
static void Main(String[] args) { Int32[] data = new Int32[] { -6, 6, 5, 4, 1, 2, 3, 0, -1, -2, -3, -4, -5 }; Int32[] indices = Enumerable.Range(0, data.Length).ToArray(); Array.Sort(data.ToArray(), indices); foreach (Int32 index in indices) { Console.Write(String.Format("{0} ", data[index])); } Console.ReadLine(); }
输出如预期的那样。
上述就是C#学习教程:对基于索引的排序是否有C#支持?分享的全部内容,如果对大家有所用处且需要了解更多关于C#学习教程,希望大家多多关注—计算机技术网(www.ctvol.com)!
-6 -5 -4 -3 -2 -1 0 1 2 3 4 5 6
本文来自网络收集,不代表计算机技术网立场,如涉及侵权请联系管理员删除。
ctvol管理联系方式QQ:251552304
本文章地址:https://www.ctvol.com/cdevelopment/1030054.html