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

2021-10-08 00:13:32 字數 817 閱讀 1826

選取基準點,左右指標分別從左右進行選取進行交換,使左邊資料小於等於基準點,右邊資料大於基準點,返回基準點,進行遞迴。

private

static

void

quicksort

(int

arr,

int left,

int right)

//分割槽

int mid =

partition

(arr, left, right)

;//左排序

quicksort

(arr, left, mid -1)

;//右排序

quicksort

(arr, mid +

1, right);}

private

static

intpartition

(int

arr,

int left,

int right)

//從右邊開始查詢 找到小於等於基點的索引位置

while

(leftptr <= rightptr && arr[rightptr]

> pivot)

//交換

if(leftptr < rightptr)

}//將基準點置於中間位置

swap

(arr, leftptr, right)

;return leftptr;

}

平均時間複雜度o(nlogn),最好時間複雜度o(nlogn),最壞時間複雜度o(n2),空間複雜度o(logn),不穩定

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

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

十大排序演算法 快速排序

原理 從數列中挑出乙個元素,稱為 基準 pivot 重新排序數列,所有元素比基準值小的擺放在基準前面,所有元素比基準值大的擺在基準的後面 相同的數可以到任一邊 在這個分割槽退出之後,該基準就處於數列的中間位置。這個稱為分割槽 partition 操作 遞迴地 recursive 把小於基準值元素的子...

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

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