快速排序法

2021-09-24 17:58:46 字數 1001 閱讀 1092

這個排序方法的時間複雜度為o(nlogn),最壞時間複雜度為o(n^2),所以說是屬於所有排序方法中比較高效率的一種了。

這種排序方法的基本思想是:

先找到乙個區間中的乙個基準點,然後找到這個區間右邊所有小於這個基準點的元素都放到基準點左邊,還有這個區間左邊所有左邊大於這個基準點的元素都放到基準點右邊。用遞迴思想,將區間化小,一直小到只有乙個元素即排序完成。

該思想的實現**寫出來可能不一樣,但是思想大概就是這個思想。

下面是我蒐集到的乙個人寫的快速排序的**:

1

void partition(int a, int start,int

end)216

if(low

1720

while(a[low]heigh) // 從區間左邊開始,找到比基準點index大的元素就放到區間右邊

2124

if(low

2528}29

30 a[low] =index; // 把基準點放到區間中間

31 partition(a,start,low-1

); // 把基準點左側的區間進行整理----遞迴

32 partition(a,low+1

,end); // 把基準點右側的區間進行整理----遞迴

33 }

下面是呼叫示例

int a = ;    

partition(a,

0,7);

執行結果

快速排序法

一 快速排序演算法的基本特性 時間複雜度 o n lgn 最壞 o n 2 空間複雜度 o n lgn 不穩定。快速排序是一種排序演算法,對包含n個數的輸入陣列,平均時間為o nlgn 最壞情況是o n 2 通常是用於排序的最佳選擇。因為,基於比較的排序,最快也只能達到o nlgn c void q...

快速排序法

include stdafx.h include vos.h define table mid machine name midmachine define table midmach colname id id define table midmach colname ip ip define t...

快速排序法

快速排序法思想 在待排序的n個資料中取第乙個數字為基準數,陣列最前面放乙個標桿,陣列最後麵放乙個標桿,通過基準數和標桿 i,j 出的數進行比較,實現每次排序完時候,共三組數,不大於基準數 基準數 不小於基準數 舉例說明 5 i 4,6,8,3,9,2 j 基準數5 標桿 i 指向5位置,標桿 j 指...