兩種快速排序

2021-09-29 16:54:51 字數 594 閱讀 4030

快排是一種基於交換的排序,氣泡排序(兩兩相鄰作比較,逆序則交換)也是基於交換的排序,快排運用了二分法的思想,每次找乙個哨兵,比哨兵小的放一邊,大的放一邊,這是完成了一趟快排。

冒泡**:

for(int i=0;ia[j+1])

}

快排一**:

void quicksort(int left,int right){

if(left>=right)return ;

int t=a[left];//哨兵

int i=left,j=right;

while(i!=j){

while(a[j]>=t&&i快排二**:

void quicksort(int left,int right){

if(left>=right)return ;

int t=a[left];//哨兵

int i=left,j=right;

while(i!=j){

while(a[j]>=t&&i區別:

都必須先從右往左找逆序。

排序一是找到兩個逆序做交換;

排序一是令原哨兵的位置為空,交替覆蓋;

快速排序的兩種實現

快速排序演算法是現在用的最廣的排序演算法,也是效率最高的。它有兩種實現方式,一種是定軸法,另外一種是挖坑法。這裡簡單介紹一下兩種實現方法的思想,並附上c 實現 一 定軸法 1.備份對軸 首記錄 2.取兩個指標left和right,初始值分別是序列的第二個元素和最後乙個元素,並且left right ...

快速排序的兩種思路

選取最左端 low 為基準值,以公升序為例 從右向左 high low 查詢到乙個小於基準值的元素,再從左向右查詢乙個大於基準值的元素,再將兩者相交換。while arr j temp low從右向左 high low 查詢到乙個小於基準值的元素,將兩者相交換,再從左向右查詢乙個大於基準值的元素,再...

兩種快速排序解析 python

快速排序的主要思想就是分而治之,遞迴將序列用主元分為兩個子串行然後排序.根據維基百科的描述,快速排序有兩種 第一種是由lomuto提出的,為in place交換 將序列最後乙個元素選為主元。兩個掃瞄標籤從左邊開始,當array j 大於主元時,j繼續掃瞄 當array j 小於主元時,交換array...