C 演算法之快速排序(十)

2021-09-26 22:57:18 字數 1021 閱讀 8389

引用部落格的介紹:快速排序

演算法思想:基於分治的思想,是氣泡排序的改進型。首先在陣列中選擇乙個基準點(該基準點的選取可能影響快速排序的效率,後面講解選取的方法),然後分別從陣列的兩端掃瞄陣列,設兩個指示標誌(low指向起始位置,high指向末尾),首先從後半部分開始,如果發現有元素比該基準點的值小,就交換low和high位置的值,然後從前半部分開始掃秒,發現有元素大於基準點的值,就交換low和high位置的值,如此往復迴圈,直到low>=high,然後把基準點的值放到high這個位置。一次排序就完成了。以後採用遞迴的方式分別對前半部分和後半部分排序,當前半部分和後半部分均有序時該陣列就自然有序了。

快速排序是一種高階排序(遞迴),速度快,效率高!

c++**如下

#include 

using namespace std;

template<

class

t>

void

quicksort(t

*a,const int left,

const int right)

while

(i;swap

(a[left]

,a[j]);

//遞迴

quicksort

(a,left,j-1)

;quicksort

(a,j+

1,right);}

}int main()

;quicksort

(k,0,9

);for(int i=

0; i<

10; i++

) cout << k[i]

<< endl;

return0;

}

其他**:

十大排序演算法之快速排序

簡單排序 插入排序 選擇排序 氣泡排序 必學 分治排序 快速排序 歸併排序 必學 分配排序 桶排序 基數排序 樹狀排序 堆排序 必學 其他 計數排序 必學 希爾排序 原理 核心思想是通過乙個支點進行資料拆分,左邊的資料小於這個支點,右邊的資料大於支點,然後把左邊和右邊的做一次遞迴,直到遞迴結束。ph...

C 寫演算法之快速排序

快速排序是從氣泡排序演變而來,快速排序之所以快,是因為使用了分治法。同氣泡排序一樣,快速排序也屬於交換排序,通過元素之間的比較和交換位置來達到排序的目的。快速排序是在每一輪挑選乙個基準元素,並讓其他比它大的元素移動到數列的一邊,比它曉得元素移動到數列的另一邊,從而把數列拆解成兩個部分。在分治法的思想...

十大排序演算法之快速排序(QuickSort)

一 前言 資料結構與演算法,順便刷leetcode,無意間發現了乙個 我覺得講解的比較好的網頁,並且會拿leetcode裡面的題目當做例題,如有需要,奉上 五分鐘學演算法 二 演算法的介紹 選取兩個哨兵i,j哨兵i指向序列的最前端,哨兵j指向序列的最後端,選取乙個基準點。判斷哨兵i指向的元素是否大於...