程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> .NET網頁編程 >> C# >> C#基礎知識 >> C#排序算法之快速排序

C#排序算法之快速排序

編輯:C#基礎知識
快速排序實現:
代碼如下:

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的關系,快速排序又會變的很慢。具體的性能數據後面再來討論研究。
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved