對集合元素進行排序是經常發生的事情,事實上大部分的集合型別都預設實現了sort方法,進行其元素的排序操作。例如list集合的sort方法有:
public void sort();在排序使用上,四個sort是大同小異,唯一不同的是大部分情況下,排序的要求決定了我們不能完全滿足於預設排序的情況,因為framework根本不清楚「你」排序的目的,例如:public void sort(comparison
comparison);
public void sort(icomparer
comparer);
public void sort(int index, int count, icomparer
comparer);
bookstore bs = new如果需要對書店的書目進行排序,那麼在我們的小示例中至少可以按照書名、書價和出版日期進行排序,因此.net framework在設計上為sort提供了很好的擴充套件,通常情況下我們需要實現自定義的comparison和comparer,例如:bookstore
, new
book,
new
book }};
// release : code01, 2009/04/12你看利用lambda表示式實現乙個custom comparison是何其簡單:// author : anytao,
// list : protram.cs
//02 sort by custom comparison
bs.books.sort((a, b) => );
foreach (var item in bs.books)
:, ", item.name, item.price, item.publishdate.tostring()));
}
bs.books.sort((a, b) => );輸出的結果為:
如果我們實現以出版日期進行排序的custom comparison,應該是這樣:
bs.books.sort((a, b) => );排序的結果如我所願:
利用lamdba表示式實現的comparison變得非常簡單,優雅有度,我們回歸複雜將lamdba表示式解析為匿名方法(anonymous method):
// release : code01, 2009/04/12如果你對匿名方法還心存芥蒂,那麼我們回歸custom comparison的最本源實現:// author : anytao,
// list : protram.cs
//03 sort by custom comparison: anonymous method
bs.books.sort(delegate(book a, book b)
);
// release : code01, 2009/04/12利用bookcomparison 進行比較,// author : anytao,
// list : bookcomparison.cs
public class
bookcomparison : icomparer
}
//04 sort by custom comparison: bookcomparison輸出的結果和bs.books.sort((a, b) => );一樣,可謂皆大歡喜。bs.books.sort(new
bookcomparison().compare);
// release : code01, 2009/04/12新增乙個comparisontype結構,在bookcomparson初始化時決定comparison的方式:// author : anytao,
// list : bookcomparison.cs
public class
bookcomparison : icomparer
public int compare(book x, book y)
return 0;}}
//04 sort by custom comparison: bookcomparison自定義comparison為實現更好的sort控制,提供了很好的擴充套件機制。在我們的實際應用中,對於例如bookstore這樣的具體應用而言,我更推薦以linq的orderby來實現,例如:bs.books.sort(new
bookcomparison(comparisontype.publishdate).compare);
//05 sort by linqorderby子句可以選擇任意的排序條件,同時ascending或者descending控制公升序和降序。var list = from c in bs.books
orderby c.publishdate ascending
select c;
foreach (var item in list)
:, ", item.name, item.price, item.publishdate.tostring()));
}
何去何從,看官自評。
sort自定義排序
1.sort介紹 用於c 中,對給定區間所有元素進行排序。使用的排序方法類似於快排的方法,時間複雜度為n log2 n 執行效率較高 標頭檔案 include algorithm 2.sort使用方法 sort函式有3個引數,sort first,last,cmp 其中,first是元素的起始位址,...
sort自定義排序
參考 例 大整數排序。對n個長度最長可達到1000的數進行排序。輸入第一行為乙個整數n,1 n 100 接下來的n行每行有乙個數,數的長度範圍為1 len 1000。每個數都是乙個正數,並且保證不包含字首零。include include include include using namespac...
sort自定義型別排序
乙個很簡單的問題,不過也磨了我好一會,在些總結記錄。1.對於不用寫自定義資料結構的情況 static int cmp const pair x,const pair y if x.second y.second return x.second y.second else return x.first...