快速排序c 實現

2021-09-13 03:48:15 字數 1370 閱讀 6319

快速排序是乙個非常有名的排序方法,在實際應用過程當中被選用的概率特別高。

這裡的實現利用了遞迴的方法,快排的思想就是,做一次從第乙個值到倒數第二個值的遍歷,在每次把序列的最後乙個當做參照,然後將小於這個值的數字與前面的值作替換,這裡用到乙個迴圈變數i,從0開始計數,也就是說迴圈完之後,前面的i個數字都比最後的這個參照數字小,然後將第i+1個數字與最後乙個數字互換,這樣,這個參照的數字就出現在了正確的排序位置上。

舉例說明:最開始是[3, 1, 2],從頭開始遍歷,第乙個數字是3,不比2小,所以不動,這時候i=0,然後第二個數字為1,比2小,則2就要與第乙個位置的數字交換,就變成了[1, 3, 2],這時候i=1,迴圈完成了,就交換最後乙個值與索引i上的值,就是交換2和3,這個時候,2就出現在了正確的位置上了,就變成了[1, 2, 3],當然如果前面不止乙個數字,後面也不止乙個數字,那就對前面的陣列以及後面的陣列遞迴的進行處理即可。

具體c++**如下:

#include

#include

#include

using namespace std;

intpartition

(vector<

int>

& nums,

int p,

int r)

;void

quicksort

(vector<

int>

& nums,

int p,

int r)

;void

show

(const vector<

int> nums)

;int

main()

;quicksort

(x,0

, x.

size()

-1);

show

(x);

return0;

}int

partition

(vector<

int>

& nums,

int p,

int r)

}swap

(nums[r]

, nums[i +1]

);return i +1;

}void

quicksort

(vector<

int>

& nums,

int p,

int r)

return;}

void

show

(const vector<

int> nums)

cout << endl;

}

**最後的輸出結果為:1 2 3 4 5 6 8

排序成功。

排序 快速排序,C 實現

本文 的github位址 基本思想 快速排序 是對 氣泡排序 的改進。基本原理 基於分治法,在待排線性表中取乙個元素pivot作為樞軸值,通過一趟排序將待排線性表劃分為獨立的兩部分,第一部分的所有元素小於pivot,第二部分的所有元素大於等於pivot,pivot位於其最終位置。遞迴對兩個子表做快速...

快速排序 c 實現

快速排序思想 基於分治策略,對氣泡排序的一種改進。對於要排序的乙個序列,從中選一值進行排序,將其放入到正確的位置position。然後以position為界,對左右兩部分再做排序。直到劃分的長度為1。步驟 設有一待排序的序列 1.分別設定low hight指向序列的最左端 最右端 從序列中選乙個進行...

快速排序(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...