排序演算法整理 快速排序

2021-10-04 04:41:19 字數 844 閱讀 4075

public

static

void

quick_sort

(int

arr ,

int l,

int r)

}quick_sort

(arr,l,j)

;quick_sort

(arr,j+

1,r)

;}

快排的思路

首先一組資料 找乙個基準數(這裡選用陣列的第一位做基準資料)

之後i從前往後掃,找到乙個大於(或等於)基準資料的數

j從後往前掃,找到乙個乙個小於(或等於)基準資料的數

之後將這兩個數字置交換

這樣比基準數小的(或者相等的)就跑到了基準數的左邊

比基準數大的(或者相等的)就跑到了基準數的右邊

然後 陣列分成了兩部分 前一部分,和後一部分,

然後再一次排左右,最終 整個陣列排序完成

時間複雜度,

平均 o(n

logn

)o(nlogn)

o(nlog

n)最差o(n

2)

o(n^2)

o(n2)空間

o (l

ogn)

o(log_n)

o(logn

​)

是不是感覺相等的有點彆扭

因為我在學習的過程中也發現了這個問題

比如遇到 222222222 這種陣列 快排就退化嚴重 當然 後面有其他排序方式

演算法 排序演算法整理 快速排序

快速排序是在氣泡排序的基礎上改進而來的,氣泡排序每次只能交換相鄰的兩個元素,而快速排序是跳躍式的交換,交換的距離很大,因此總的比較和交換次數少了很多,速度也快了不少。快速排序的演算法思想稍微有點複雜,但是還是比較容易理解的。快速排序的思想就是挖坑填坑 分治法 比如下面這個陣列,我們首先選擇乙個基準數...

排序演算法整理小結(快速排序)

說到快速排序演算法,可能我們會了解到其最壞的執行時間為o n n 但是對於其平均效能為o nlgn 正是這一點使得其被廣泛的使用,另乙個重要的特點就是,其能夠進行原地排序,能夠盡可能的減少空間的占用,盡可能的減小演算法使用的空間。說了這麼多理由,那麼到底是怎麼一回事,或者到底是怎麼樣的呢?其核心部分...

排序 排序演算法整理

經常零零散散的用到排序演算法,將幾類常見的總結下來 時間複雜度o n 2 空間複雜度o 1 穩定排序 param arr public static void insersort int arr else arr j 1 tmp 氣泡排序 時間複雜度 o n 2 空間複雜度o 1 穩定排序 para...