排序演算法(2)快速排序

2021-08-20 20:06:06 字數 858 閱讀 8422

採用分治思想

(1)從序列中挑出乙個元素作為「基準」(privot)

(2)把所有比基準小的元素放在基準前面,把所有比基準大的元素放在基準後面,這個操作稱為「分割槽」

(3)對每個分割槽遞迴的進行(1),(2),遞迴結束的條件是序列的大小是0或1

分類:內部比較排序

資料結構:陣列

最差時間複雜度:(每次選取的基準都是最大或最小的元素,導致只劃分出乙個分割槽,需要進行n-1次遞迴)o(n^2)

最優時間複雜度:每次選取的基準都是中位數,這樣每次可以劃分出兩個分割槽,只需要logn次就能劃分出分割槽o(nlogn)

平均時間複雜度:o(nlogn)

所需輔助空間:主要是遞迴造成的棧空間的使用,取決於遞迴樹的深度。一般為o(logn),最大o(n)

穩定性:不穩定(不穩定發生在基準元素與比基準元素大的序列的第乙個值交換的時候)

public class quick 

//分割槽

排序演算法2 氣泡排序,快速排序

氣泡排序 include using namespace std void bubblesort int arry,int size void print int arry,int size void main print arry,5 bubblesort arry,5 print arry,5 ...

快速排序演算法2

package com.mianshi describe 快速排序演算法2 排序結果從小到大 create on 2011 05 25 author sylor.liu version 1.0 since jdk1.6 public class quicksort2 對資料進行快速排序 privat...

快速排序2(演算法)

快速排序 1.核心思想 2.思路 3.模板 4.例題 1.核心思想 分治 分治 字面上的解釋是 分而治之 就是把乙個複雜的問題分成兩個或更多的相同或相似的子問題,再把子問題分成更小的子問題 直到最後子問題可以簡單的直接求解,原問題的解即子問題的解的合併,這個技巧是很多高效演算法的基礎。2.思路 1 ...