惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
S
Schneier on Security
C
Cyber Attacks, Cyber Crime and Cyber Security
N
News and Events Feed by Topic
TaoSecurity Blog
TaoSecurity Blog
T
Threat Research - Cisco Blogs
博客园 - 三生石上(FineUI控件)
大猫的无限游戏
大猫的无限游戏
The Last Watchdog
The Last Watchdog
Latest news
Latest news
AI
AI
Webroot Blog
Webroot Blog
Exploit-DB.com RSS Feed
Exploit-DB.com RSS Feed
The Hacker News
The Hacker News
Google DeepMind News
Google DeepMind News
S
Securelist
IT之家
IT之家
雷峰网
雷峰网
OSCHINA 社区最新新闻
OSCHINA 社区最新新闻
P
Proofpoint News Feed
Last Week in AI
Last Week in AI
博客园 - Franky
美团技术团队
Cyberwarzone
Cyberwarzone
C
CERT Recently Published Vulnerability Notes
Security Archives - TechRepublic
Security Archives - TechRepublic
Security Latest
Security Latest
T
Tailwind CSS Blog
S
Security Affairs
S
Security @ Cisco Blogs
H
Heimdal Security Blog
腾讯CDC
N
News | PayPal Newsroom
K
KPMG report finds enterprise disconnect between AI and its ROI | CIO
博客园 - 司徒正美
博客园_首页
Jina AI
Jina AI
M
MIT News - Artificial intelligence
Hacker News - Newest:
Hacker News - Newest: "LLM"
B
Blog
F
Full Disclosure
www.infosecurity-magazine.com
www.infosecurity-magazine.com
T
The Blog of Author Tim Ferriss
Schneier on Security
Schneier on Security
N
News and Events Feed by Topic
NISL@THU
NISL@THU
C
Cisco Blogs
T
Troy Hunt's Blog
O
OpenAI News
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More

博客园 - Samson小天

My researches during my college life. 一些底层的简单东西。 IAT HOOK 实现进程保护 大年初一,总结一下去年的十大事件~ 解决多线程产生的“以前的函数求值超时,函数求值被禁用。必须继续执行才能重新启用函数求值” Guessing Game解题报告 (pku 2328) 分析一道08年10月12日的江苏省程序设计大赛正赛题 数学之美 UltraRun is released 简单的QQ游戏中大家来找茬外挂编写思路 最近写C++程序时关于GetLastError的感悟。 在Vista的UAC下检查程序是否具有Admin权限及应用程序的权限切换 从程序开发角度谈类的封装性。 教你如何解决“线程间操作无效: 从不是创建控件的线程访问它” C#中调用WIN32的API 小记delegate,简单的委托介绍 一个计算简单数学表达式值的算法。 string类型的初值不是随便赋的,记一次奇怪的访问冲突事件 对C#中ADO.NET开发的理解
C# 自定义实体类或集合的自动排序
Samson小天 · 2008-08-29 · via 博客园 - Samson小天

          数据结构学了那么久,昨天晚上突然看见网上评测自己写的快速排序和.net自带的sort,结果竟然没有.net自带的快。这个结果让我一直喜欢自己写代码的人着实郁闷了把。所以研究了下.net自带的sort。

          今天就拿自己写的日程提醒为例来讲讲如何实现自动排序。

          首先,要想实现集合自动排序必须实现IComparable接口,接下来我们就按照提醒时间为我们日程排序。

日程类

          哈哈,因为是按照时间的,而DateTime类已经为我们实现了IComparable接口,所以只要在自己实现的类中返回时间的比较结果就可以了。

          这里给不幸要完全自己写ComapreTo方法的程序员一点提示,是摘自MSDN的

------------------我是无敌分割线-----------------

          此方法只是一个定义,必须由特定的类或值类型实现才能生效。“小于”、“等于”和“大于”这几种比较的含义取决于具体的实现。

          根据定义,任何对象与 空引用(在 Visual Basic 中为 Nothing) 相比较都要大,两个空引用的比较结果为彼此相等。

          给实现者的说明 对于对象 A、B 和 C,以下条件必须为真: A.CompareTo(A) 必须返回零。 如果 A.CompareTo(B) 返回零,则 B.CompareTo(A) 必须返回零。 如果 A.CompareTo(B) 返回零并且 B.CompareTo(C) 返回零,则 A.CompareTo(C) 必须返回零。 如果 A.CompareTo(B) 返回一个非零值,则 B.CompareTo(A) 必须返回符号相反的值。 如果 A.CompareTo(B) 返回一个不等于零的值 x,并且 B.CompareTo(C) 返回一个与 x 符号相同的值 y,则 A.CompareTo(C) 必须返回与 xy 都符号相同的值。

          给调用者的说明 使用 CompareTo 方法可确定类的实例的排序。

------------------我是无敌分割线-----------------

          回到正题,将上面的日程类写完后就能对日程类的集合实现自动排序了。何为自动排序,就是.Sort()->排好了,多轻松。我们来看看排序的代码。

自动排序

          一句_ap.Sort()搞定一切,多轻松。这里顺便告诉大家一个实现IComparable接口的另一个好处。要知道这里是插入一个日程后就重新排序。虽然快速排序很快,但是其最优实现也是N*lgN的时间消耗。与其每次插入,不如在插入的时候就按照顺序,这样就不用排序了。如果我们定义好了IComaprable接口,那么一切不用操心,SortedList<>泛型为你实现一切,如果读者有兴趣,可以参考CSDN的这篇文章(SortedList-asp.net入门笔记(七)),这里就不在赘述了。

          文章比较基础,高手勿怪,如果有错误敬请指正,谢谢。