快速排序分析

2021-09-14 04:34:00 字數 727 閱讀 6316

簡單對快速排序比較次數效率分析

假設每次選擇最後乙個為分界點,分開之後,其他元素順序不被打亂:

加入初始42,4,1,3,先選擇3

劃分之後,變為左右兩個子串行

此時3已固定,分別選擇子串行最後乙個

第乙個子串行需要再劃分一次,第二個序列只有乙個元素,因此不用做任何事情

假設對n個元素排序,有n!個,每個序列需要比較 $c_i$ 次,那麼總共需要

$$f(n)=\sum_^c_i$$

次比較,平均意義上,假設每種序列概率相同,需要

$$g(n)=^c_i \over n!}=$$

假設長度n的序列的所有情況一共需要f(n)次比較,當遇到n+1長的序列時,需要

$$f(n+1)=^i} + ^c_^*(f(k)(n-k)! + k!f(n-k)) }}=^c_^*f(n-k)*k!}}$$

而n+2時,需要的次數為

$$f(n+1)= + ^c_^*f(n+ 1 -k)*k!}$$

$$= + + $$

$$= + $$

因此$$f(n+1)= + 2n*n!} $$

利用差分方程公式以及初始值$f(1)=0$,可解出

$$f(n+1)=2(n+2)!( + + ... + - )$$

即$$f(n)=2(n+1)!( + + ... + - )$$

$$f(n)=2(n+1)!( \sum_^ - )$$

快速排序分析

1.開篇 終於還是忍不住要學習一下演算法啦,該面對的還是要面對,不能逃避,不能把已經會的技能忘掉,那是一種對生命的摧殘和不仁。不要怕,只要每天都在進步,水滴石穿,終有破雲見天日的時刻。感慨寫完了,回到正題,分析快速排序。2.原理 假設要排序的陣列是a 0 a n 1 首先任意選取乙個資料 通常選用陣...

快速排序分析

首先簡單描述一下快速排序 1.快速排序樹不穩定的 由於關鍵字的比較與交換是跳躍進行的 2.時間複雜度為o n logn 最好情況為n logn 若陣列基本有序為n n 3.空間複雜度為logn 主要是遞迴造成的棧空間的使用,最好情況,遞迴樹的深度為log2n,其空間複雜度也就為o logn 最壞情況...

快速排序分析

一直想研究一下快速排序,今天剛好有空,寫一下自己對快速排序的認識。快速排序由於排序效率在同為o n logn 的幾種排序方法中效率較高,因此經常被採用。該方法的基本思想是 1 先從數列中取出乙個數作為基準數。2 分割槽過程,將比這個數大的數全放到它的右邊,小於或等於它的數全放到它的左邊。3 再對左右...