目錄
1.簡要說明
2.官方檔案
3.舉例說明
3.1.預設排序sort()
3.2sort(icomparer comparer)
3.3sort(comparison comparison)
3.4sort(int index, int count, icomparer comparer)
4.總結
泛型list命名空間為system.collections.generic,官網文件的sort有4種過載方法:
//使用指定的比較器對 system.collections.generic.list`1 中某個範圍內的元素進行排序
public void sort(int index, int count, icomparercomparer);
//使用指定的 system.comparison`1 對整個 system.collections.generic.list`1 中的元素進行排序
public void sort(comparisoncomparison);
//使用預設比較器對整個 system.collections.generic.list`1 中的元素進行排序
public void sort();
//使用指定的比較器對整個 system.collections.generic.list`1 中的元素進行排序
public void sort(icomparercomparer);
//
// 摘要:
// 使用指定的比較器對 system.collections.generic.list`1 中某個範圍內的元素進行排序。
//// 引數:
// index:
// 要排序的範圍的從零開始的起始索引。
//// count:
// 要排序的範圍的長度。
//// comparer:
// 比較元素時要使用的 system.collections.generic.icomparer`1 實現,或者為 null,表示使用預設比較器 system.collections.generic.comparer`1.default。
//// 異常:
// t:system.argumentoutofrangeexception:
// index 小於 0。 - 或 - count 小於 0。
//// t:system.argumentexception:
// index 和 count 未指定 system.collections.generic.list`1 中的有效範圍。 - 或 - 在排序過程中,comparer
// 的實現會導致錯誤。例如,將某個項與其自身進行比較時,comparer 可能不返回 0。
//// t:system.invalidoperationexception:
// comparer 為 null,且預設比較器 system.collections.generic.comparer`1.default 找不到 t 型別的
// system.icomparable`1 泛型介面或 system.icomparable 介面的實現。
public void sort(int index, int count, icomparercomparer);
//// 摘要:
// 使用指定的 system.comparison`1 對整個 system.collections.generic.list`1 中的元素進行排序。
//// 引數:
// comparison:
// 比較元素時要使用的 system.comparison`1。
//// 異常:
// t:system.argumentnullexception:
// comparison 為 null。
//// t:system.argumentexception:
// 在排序過程中,comparison 的實現會導致錯誤。例如,將某個項與其自身進行比較時,comparison 可能不返回 0。
public void sort(comparisoncomparison);
//// 摘要:
// 使用預設比較器對整個 system.collections.generic.list`1 中的元素進行排序。
//// 異常:
// t:system.invalidoperationexception:
// 預設比較器 system.collections.generic.comparer`1.default 找不到 t 型別的 system.icomparable`1
// 泛型介面或 system.icomparable 介面的實現。
public void sort();
//// 摘要:
// 使用指定的比較器對整個 system.collections.generic.list`1 中的元素進行排序。
//// 引數:
// comparer:
// 比較元素時要使用的 system.collections.generic.icomparer`1 實現,或者為 null,表示使用預設比較器 system.collections.generic.comparer`1.default。
//// 異常:
// t:system.invalidoperationexception:
// comparer 為 null,且預設比較器 system.collections.generic.comparer`1.default 找不到 t 型別的
// system.icomparable`1 泛型介面或 system.icomparable 介面的實現。
//// t:system.argumentexception:
// 在排序過程中,comparer 的實現會導致錯誤。例如,將某個項與其自身進行比較時,comparer 可能不返回 0。
public void sort(icomparercomparer);
自定義的類要實現icomparable介面,最好用泛型,要不然有拆箱操作
自帶資料型別可以直接使用sort();
舉例寫自定義薪水類,有名子、年齡、薪水值欄位,更加指定字段排序
using system.collections.generic;
using system;
[serializable]
public class salary : icomparable
//sort()預設呼叫方法
//實現泛型介面:icomparablepublic int compareto(salary other)
//實現介面:icomparable,不建議使用
//public int compareto(object obj)//}
呼叫list.sort(),預設呼叫自定義類compareto()方法
public listlist;
void start()
;list.sort();
}
以下幾種方法預設類,並初始化
using system.collections.generic;
using system;
[serializable]
public class salary
}
初始化,賦值
public listlist;
void start();}
正式開始sort(icomparercomparer)方法,自定義比較器
//自定義年齡比較器
public class agecomparor : icomparer
}
呼叫
list.sort(new agecomparor());
該方法不用先定義比較器
//根據名字排序
list.sort((a, b) => );
//或者更加薪水值排序
b) => );
要先定義 agecomparor();
list.sort(1, 2, new agecomparor());
個人認為,第三種方法比較簡潔,自定義類不用整合比較介面,也不用自定義比較器,在使用時根據自己的需求自定義排序方式,但要注意注意結構,裡面是有兩個引數的拉姆達表示式
C 中List的排序用法 Sort
要對自定義類陣列或list進行排序,譬如 listuserlist arraylist arraylist 最重要的是 繼承icomparer介面,實現int icomparer.compare t t1,t t2 方法。如下 繼承icomparer介面,實現同一自定義型別 物件比較 t為泛用型別 ...
sort排序用法
做acm題的時候,排序是一種經常要用到的操作。如果每次都冒泡之類的o n 2 排序,不但程式容易超時,而且費時。在algorithm 演算法 庫里有個sort函式,可以直接對陣列排序,複雜度為n log2 n 使用這個函式,需要包含三個標頭檔案。include include using names...
Sort排序用法
使用sort函式簡單 方便,c 一種排序方法之一 排序方法是類似於快排的方法 但是實際運用過程需要我們做一些變形 於是 寫下這篇筆記,以便後來複習 sort start,end,cmp 標頭檔案為 include sort函式有三個引數 1 第乙個引數是陣列的首位址,一般寫上陣列名就可以,因為陣列名...