SortedList? 还是用List 的 List.Sort()吧!
来源:互联网 发布:免费洗衣软件 编辑:程序博客网 时间:2024/06/06 04:50
在利用.NetFramework编程的时候。
SortedList对于规模比较小的索引应用上,真的比较方面。但是随着规模的增长,这将会变成一场噩梦——时间的消耗比简单的插入排序还恐怖(实际上它就变成了插入排序);
算了,还是用List吧,List.Sort()据说利用的是带有一堆检查机制的QuickSort(快速排序),尤其是对于比较小的数组,速度可以超过手写的普通QuickSort。
参见(http://www.pin5i.com/showtopic-24424.html)
但是对于索引/查找的应用,有Key和Value两个域。排序是对于一个域进行的。
解决方法很简单:
1. 建立包含Key和Value作为成员变量的类C_Ele
2. 链表:List<C_Ele>
3. 重写List.Sort()需要用到的比较函数:public class DinoComparer: IComparer<string>
4. 使用的时候,DinoComparer dc = new DinoComparer(); myList.Sort(dc);
参考(http://msdn.microsoft.com/zh-cn/library/234b841s(VS.85).aspx)
C#
复制代码
using System;using System.Collections.Generic;public class DinoComparer: IComparer<string>{ public int Compare(string x, string y) { if (x == null) { if (y == null) { // If x is null and y is null, they're // equal. return 0; } else { // If x is null and y is not null, y // is greater. return -1; } } else { // If x is not null... // if (y == null) // ...and y is null, x is greater. { return 1; } else { // ...and y is not null, compare the // lengths of the two strings. // int retval = x.Length.CompareTo(y.Length); if (retval != 0) { // If the strings are not of equal length, // the longer string is greater. // return retval; } else { // If the strings are of equal length, // sort them with ordinary string comparison. // return x.CompareTo(y); } } } }}public class Example{ public static void Main() { List<string> dinosaurs = new List<string>(); dinosaurs.Add("Pachycephalosaurus"); dinosaurs.Add("Amargasaurus"); dinosaurs.Add("Mamenchisaurus"); dinosaurs.Add("Deinonychus"); Display(dinosaurs); DinoComparer dc = new DinoComparer(); Console.WriteLine("/nSort with alternate comparer:"); dinosaurs.Sort(dc); Display(dinosaurs); SearchAndInsert(dinosaurs, "Coelophysis", dc); Display(dinosaurs); SearchAndInsert(dinosaurs, "Oviraptor", dc); Display(dinosaurs); SearchAndInsert(dinosaurs, "Tyrannosaur", dc); Display(dinosaurs); SearchAndInsert(dinosaurs, null, dc); Display(dinosaurs); } private static void SearchAndInsert(List<string> list, string insert, DinoComparer dc) { Console.WriteLine("/nBinarySearch and Insert /"{0}/":", insert); int index = list.BinarySearch(insert, dc); if (index < 0) { list.Insert(~index, insert); } } private static void Display(List<string> list) { Console.WriteLine(); foreach( string s in list ) { Console.WriteLine(s); } }}/* This code example produces the following output:PachycephalosaurusAmargasaurusMamenchisaurusDeinonychusSort with alternate comparer:DeinonychusAmargasaurusMamenchisaurusPachycephalosaurusBinarySearch and Insert "Coelophysis":CoelophysisDeinonychusAmargasaurusMamenchisaurusPachycephalosaurusBinarySearch and Insert "Oviraptor":OviraptorCoelophysisDeinonychusAmargasaurusMamenchisaurusPachycephalosaurusBinarySearch and Insert "Tyrannosaur":OviraptorCoelophysisDeinonychusTyrannosaurAmargasaurusMamenchisaurusPachycephalosaurusBinarySearch and Insert "":OviraptorCoelophysisDeinonychusTyrannosaurAmargasaurusMamenchisaurusPachycephalosaurus */
- SortedList? 还是用List 的 List.Sort()吧!
- C# List和SortedList简介
- list的sort问题
- list的独有sort
- list sort
- list sort
- Sort List
- Sort List
- list - sort
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- Sort List
- EBS R12 快捷键
- Mysql 表结构
- [知识竞赛策划方案] 【图】关于知识竞赛抢答器的问题
- 教你如何用Lumigent 4.1 工具查看SQLServer2000 SQLServer 2005 日志文件 里执行的SQL
- Javascript递归实现生成A到ZZZ的字符串
- SortedList? 还是用List 的 List.Sort()吧!
- MySQL数据库之UPDATE更新语句精解
- 半天时间 顺利开通IDP 可以开耍了!
- google地图学习总结1
- 关于xslt 操作xml 显示html的小例子
- 简单配置bind
- google地图学习总结2(与jquery结合)
- 高精度大数运算的实现
- 英语生活缄言