List排序 Sort的用法

2021-10-07 16:59:20 字數 4543 閱讀 9940

目錄

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 第乙個引數是陣列的首位址,一般寫上陣列名就可以,因為陣列名...