基於比較的排序時間下界

2021-08-18 07:06:51 字數 386 閱讀 5404

乙個長度為n的集合排序的結果有n!個結果。

以比較為基礎的排序方式可以看做二叉樹,每個非葉節點左右決定每次比較大小的走向,那麼顯然所有的排序結果都是在這個二叉樹上的葉子(存在可能一結果多個葉子)。

已知葉子節點數為不少於n!個,那麼時間複雜度下界的求解就轉化為,求解:乙個已知葉子節點數不小於n!的二叉樹的深度——即log(n!)

當n>1時 有n!>= n(n-1)(n-2)...(n/2)>=(n/2)^(n/2)

當n>4時 有t(n)=k>=log(n!)>=log((n/2)^(n/2))=n/2*log(n/2)=n/2*(1/2*(logn + logn) - log2)>=   *注n取4

n/4*logn 得證

t(n)時間複雜度下界o(nlogn)

基於比較氣泡排序 時間複雜度O n 2

只操作相鄰的兩個資料,每次冒泡操作都會對相鄰的兩個元素進行比較,看是否滿足大小關係要求,如果不滿足讓它兩互換。一次冒泡會讓至少乙個元素移動到它應該在的位置,重複 n 次,就完成了 n 個資料的排序工作。eg 對於一組資料 4 5 6 3 2 1第一次冒泡的過程 經過了 5 次比較,此時 3 已經在正...

基於比較的快速排序 時間複雜度為O nlogn

快速排序 快排利用的是分治思想。如果要排序陣列中下標從 p 到 r 之間的一組資料,選擇p 到 r 之間的任意乙個資料作為分割槽點pivot。遍歷 p 到 r 之間的資料,將小於pivot的放到左邊,將大於pivot的放到右邊,將pivot放到中間。經過這一步驟後陣列 p 到 r 之間的資料就被分為...

基於比較的插入排序 時間複雜度O n 2

直接插入排序 insert sort 將陣列中的資料分為兩個區域,已排序區間和未排序區間。初始已排序區間只有乙個元素,就是陣列的第乙個元素。插入演算法的核心思想就是取未排序區間中的元素,在已排序區間中從後往前找到最合適的位置將其插入,並保證已排序區間資料一直有序,重複這個過程,直到未排序區間中元素未...