快速排序思想:
基於分治策略,對氣泡排序的一種改進。對於要排序的乙個序列,從中選一值進行排序,將其放入到正確的位置position。然後以position為界,對左右兩部分再做排序。直到劃分的長度為1。
步驟:設有一待排序的序列
1.分別設定low、hight指向序列的最左端、最右端;從序列中選乙個進行排序(通常選最左端的值low指向的值),存入到tmp;
2.從hight端開始,查詢比tmp小的,找到後講該值放入到low指向的儲存位中;同時將hight指向當前查到的值所在的位;
3.從low端開始,查詢比tmp大的,找到後將該值放入到hight指向的儲存為中,同時low指向當前查到的值所在位;
4.若low位小於hight位,返回2步;否則,將tmp值存入到空出來的low+1指向的位置,退出,返回low所在的位置lposition。
5.以lposition為界,將序列分成兩部分,分別對兩部分進行排序。
這裡用個整數陣列作為待排序的序列,c#實現如下:
其中最關鍵的是partition,做一次排序的劃分,將其放入到正確的位置。
注:已在vs2005中編譯通過,並正確執行
排序 快速排序,C 實現
本文 的github位址 基本思想 快速排序 是對 氣泡排序 的改進。基本原理 基於分治法,在待排線性表中取乙個元素pivot作為樞軸值,通過一趟排序將待排線性表劃分為獨立的兩部分,第一部分的所有元素小於pivot,第二部分的所有元素大於等於pivot,pivot位於其最終位置。遞迴對兩個子表做快速...
快速排序(C 實現)
include using namespace std void swap int a,int b int sort int begin,int end if beginwhile beginif begin return begin void quicksort int begin,int end...
快速排序C 實現
最近在看 劍指offer 這本書,也在為找工作做一些準備,今天在書上看到排序在面試當中的重要性,所以下決心要好好搞一下 快速排序是一種最壞情況時間複雜度為o n2 的排序演算法,雖然最壞情況時間複雜度很差,但是快速排序通常是在實際排序應用中最好的選擇,因為它的平均效能非常好 它的期望時間複雜度是 n...