1. Using LINQ (Language-Integrated Query)
2. Converting Values and Keys to a List
3. Using delegate
Reference:
1- How to sort a Dictionary with C#
2- Sorts a Dictionary by keys and by values.
3- 當心LINQ搜尋的效能陷阱
不想用LINQ、不想實作,有沒有更快速的方法?
有的,用SortedDictionary<TKey, TValue>Class取代Dictionary<TKey, TValue>即可自動以TKey做排序。
2016年4月13日 星期三
2015年8月4日 星期二
遞迴(Recursive)
遞迴(Recursion)
一個還沒執行完又呼叫自己,符合條件時才停止的副程式。
一個不停呼叫自己直到滿意為止的程式。
初學時,總覺得莫名其妙,明明迴圈就可以處理了,為何要改成這種沒寫好就會陷入無窮迴圈的模式...
遇過有人看到所寫的程式寫法太"單純",沒用到遞回就質疑學藝不精...
洪教授寫了一篇愚公移山與遞迴,清楚說明了這跟效率與程式可讀性有關,
除此之外,個人認為還有Programmer 習慣與思考迴路的影響...
舉例來說:
假設每個月存3000元,隔月比上個月多存100元,計算存到n個月後會有多少錢?
也就是第1個月存3000元、第2個月存3100、第3個月存3200...
迴圈寫法
遞迴寫法
一個還沒執行完又呼叫自己,符合條件時才停止的副程式。
一個不停呼叫自己直到滿意為止的程式。
初學時,總覺得莫名其妙,明明迴圈就可以處理了,為何要改成這種沒寫好就會陷入無窮迴圈的模式...
遇過有人看到所寫的程式寫法太"單純",沒用到遞回就質疑學藝不精...
洪教授寫了一篇愚公移山與遞迴,清楚說明了這跟效率與程式可讀性有關,
除此之外,個人認為還有Programmer 習慣與思考迴路的影響...
舉例來說:
假設每個月存3000元,隔月比上個月多存100元,計算存到n個月後會有多少錢?
也就是第1個月存3000元、第2個月存3100、第3個月存3200...
迴圈寫法
///<param name="n">計算月數</param>
///<param name="inc">每月增額</param>
///<param name="deposit">存款</param>
///<returns></returns>
protected int recursive(int n, int inc, int deposit)
{
int mny = 0;
for (int i = 1; i <= n; i++)
{
mny = mny + deposit + inc * (i - 1);
}
return mny;
}
遞迴寫法
///<param name="n">計算月數</param>
///<param name="inc">每月增額</param>
///<param name="deposit">存款</param>
///<returns></returns>
protected int recursive(int n, int inc, int deposit)
{
return (n == 1) ? deposit : deposit + recursive(n - 1, inc, deposit + inc);
}
訂閱:
文章 (Atom)