C 快速排序集合

2021-06-08 13:24:51 字數 1349 閱讀 1510

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 )

如果看不懂這些乾巴巴的理 字,那就先不用看了,下面 中有詳細的注釋,大家可以先跟著 走幾遍,回過頭來再看這些文字描述,總之 紙上得來終覺淺,絕知此事要躬行。排序演算法哪家強,從實際應用的角度上將,快排表現很好。很自然地,人們會覺得短陣列比長陣列更好處理,因此可能會想到將原始陣列分為若干各子部分然後分...