C#排序算法之快速排序
C#排序算法怎樣快速排序呢?下面小編爲大家整理了C#排序算法之快速排序,希望能幫到大家!
快速排序實現:
複製代碼 代碼如下:
namespace QuickSort
{
class QuickSort
{
public static void Sort(int[] array)
{
DoSort(array,0, th-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的關係,快速排序又會變的很慢。具體的性能數據後面再來討論研究。
相關文章
-
C語言中使用快速排序算法對元素排序的實例
很多朋友對如何在C語言中使用快速排序算法對元素排序存在疑惑,下面小編爲大家整理了C語言中使用快速排序算法對元素排序的實例,希望能幫到大家! 調用C語言的快速排序算法qsort(); #include#include#include#define -
c語言中冒泡排序、插入排序、選擇排序算法比較
掌握好常用的排序算法,在實際的項目開發中可以節省很多的時間。每一種排序算法在執行的效率上是存在差別的,這些微小的時間差,也許在平常的聯繫當中感覺不到,但是涉及到數據量比較大或者是在資源比較緊張的系統中就顯得尤 -
C#排序算法之堆排序
關於C#排序算法的堆排序具體是怎麼樣的呢?下面小編爲大家整理了C#排序算法之堆排序,希望能幫到大家! 一、基本概念堆:這裏是指一種數據結構,而不是我們在C#中提到的用於存儲引用類型對象的地方。它可以被當成一棵完全二叉 -
c#快速排序算法
大家知道c#快速排序算法是怎麼樣的嗎?下面小編爲大家整理了c#快速排序算法,希望能幫到大家!快速排序使用分治法(Divide and conquer)策略來把一個串行(list)分爲兩個子串行(sub-lists)。步驟爲:1.從數列中挑出一個元素,稱爲 "基 -
C語言快速排序算法及代碼
快速排序是對冒泡法排序的一種改進。那麼有關C語言快速排序算法和代碼分別又是怎樣的呢?以下僅供參考!快速排序算法 的基本思想是:將所要進行排序的數分爲左右兩個部分,其中一部分的所有數據都比另外一 部分的數據小,然後 -
快速排序算法及C#版的實現示例
快速排序是一種劃分交換排序。下面小編爲大家整理了快速排序算法及C#版的實現示例,希望能幫到大家! 算法思想快速排序是e於1962年提出的一種劃分交換排序。它採用了一種分治的策略,通常稱其爲分治法(Divide-and-Conquer -
排序之一:直接插入排序(C語言實現)
導語:C語言的設計目標是提供一種能以簡易的方式編譯、處理低級存儲器、產生少量的機器碼以及不需要任何運行環境支持便能運行的編程語言。下面我們來看看直接插入排序(C語言實現),希望對大家有所幫助。直接插入排序方法:僅 -
c++快速排序詳解
快速排序,實際中最常用的一種排序算法,速度快,效率高,下面是小編分享的c++快速排序詳解,一起來看一下吧。基本思想:通過一趟排序將要排序的數據分割成獨立的兩部分,其中一部分的所有數據都比另外一部分所有數據要小,然後再按 -
內部排序之堆排序的實現
隨着法律觀念的深入人心,我們用到合同的地方越來越多,簽訂合同可以使我們的合法權益得到法律的保障。那麼合同書的格式,你掌握了嗎?下面是小編精心整理的農產品訂購合同,歡迎閱讀,希望大家能夠喜歡。農產品訂購合同1合同編 -
PHP快速排序算法詳解
PHP具有非常強大的功能,所有的CGI的功能PHP都能實現,而且支持幾乎所有流行的數據庫以及操作系統。最重要的是PHP可以用C、C++進行程序的擴展!以下是小編爲大家搜索整理的PHP 快速排序算法詳解, 希望能給大家帶來幫助!更