国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > C# > 正文

C#排序算法之快速排序

2020-01-24 03:44:39
字體:
來源:轉載
供稿:網友
快速排序實現:
復制代碼 代碼如下:

namespace QuickSort
{
class QuickSort
{
public static void Sort(int[] array)
{
DoSort(array,0, array.Length-1);
}
private static void DoSort( int[] array, int start, int end)
{
if( start < end)
{
int temp = Partition(array, start, end);
DoSort(array, start, temp-1);
DoSort(array, temp + 1, end);
}
}
private static int Partition(int[] array,int start, int end)
{
int index = start - 1;
for( var i=start; i< end; i++)
{
if( array[i] < array[end])
{
index++;
Swap(array, index, i);
}
}
Swap(array, index +1, end);
return index + 1;
}
private static void Swap(int[] array, int index1, int index2)
{
var temp = array[index1];
array[index1] = array[index2];
array[index2] = temp;
}
}
}

以上即為快速排序的代碼,這里有兩個重要的方法:
1、Partition:該方法是以數組的某個元素為參考元素(軸元素或主元素),將數組劃分成三個區域:
【<=參考元素】【參考元素】【>=參考元素】
2. DoSort:該方法會調用Partition將數組分區,并在新產生的子數組上遞歸調用最終達到有序的目的。
上面給出的代碼是以數組最后一個元素作為參考元素,這僅是參考元素選取的方式之一。我們也可以隨即選取數組的元素或者數組中間的元素作為參考元素。事實上參考元素的選取對快速排序的性能有很大影響。如果每次選取的參考元素能將數組分成相對均衡的區域,快速排序將成為最快的排序算法;但在另一種極端情形下,每次分成的數組都是1和n-1的關系,快速排序又會變的很慢。具體的性能數據后面再來討論研究。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 茶陵县| 沧源| 临汾市| 桦甸市| 屯昌县| 长垣县| 壶关县| 常熟市| 冷水江市| 内丘县| 肇州县| 榆树市| 搜索| 屏东县| 安康市| 开鲁县| 砀山县| 讷河市| 宿州市| 金川县| 年辖:市辖区| 靖州| 钟祥市| 林周县| 静海县| 丰县| 大宁县| 深州市| 黑山县| 哈尔滨市| 杨浦区| 安达市| 宁武县| 桂阳县| 郴州市| 琼结县| 阿拉善盟| 和平区| 辽宁省| 福清市| 平果县|