c#實現集合排序類。
說明:1、集合型別引數化;
2、可根據集合中的物件的各個屬性進行排序,傳入屬性名稱即可;
注:屬性必須實現了icomparable介面,c#中int、datetime、string等基本型別都已經實現了icomparable介面。
/// /// 對集合進行排序,如
/// listusers=new list()
/// listsorter.sortlist,user>(ref users,"name",sortdirection.ascending);
///
public class listsorter}}
/// /// 快速排序演算法
///
/// 集合型別,需要實現ilist集合
/// 集合中物件的型別
/// 集合物件
/// 起始位置,從0開始
/// 終止位置
/// 集合中物件的屬性,屬性必須要實現icomparable介面
/// 排序型別(公升序或降序)
private static void quicksort(ref tcollection list, int left, int right, propertyinfo propertyinfo, sortdirection direction) where tcollection : ilist
if (i < j)
while (i < j && ((icomparable)propertyinfo.getvalue(key, null)).compareto((icomparable)propertyinfo.getvalue(list[i], null)) > 0)
if (i < j)
list[i] = key;
}else
if (i < j)
while (i < j && ((icomparable)propertyinfo.getvalue(key, null)).compareto((icomparable)propertyinfo.getvalue(list[i], null)) < 0)
if (i < j)
list[i] = key;}}
//執行遞迴呼叫
quicksort(ref list, left, i - 1, propertyinfo, direction);
quicksort(ref list, i + 1, right, propertyinfo, direction);}}
}/// /// 排序型別
///
public enum sortdirection
排序演算法集合(3) 快速排序原理及C 實現
快速排序的思想是 1 初始輸入值是一串亂序的數字s 2 選取某個邏輯位置的值為 中間值 m 然後經過用s中的其他元素跟m比較 比m大的元素都調整到在 中間值 之前,其餘的放置在 中間值 之後 現在,序列成了 準排序 狀態,s被調整為s 分為三個部分p m q 而這三個部分有p m q的關係 p內任意...
排序 快速排序(C )
1 演算法描述 1.1 設當前參加排序的陣列為array 0.n 1 選擇乙個元素 通常稱該元素為基準元素 作為基準元素 將小於或者等於基準元素的所有元素都移到基準元素的左邊 把大於或者等於基準元素的所有元素都移到分界元素的右邊 執行完 2 3 步驟後,基準元素左邊元素序列,基準元素,基準元素右邊元...
排序 快速排序(C )
如果看不懂這些乾巴巴的理 字,那就先不用看了,下面 中有詳細的注釋,大家可以先跟著 走幾遍,回過頭來再看這些文字描述,總之 紙上得來終覺淺,絕知此事要躬行。排序演算法哪家強,從實際應用的角度上將,快排表現很好。很自然地,人們會覺得短陣列比長陣列更好處理,因此可能會想到將原始陣列分為若干各子部分然後分...