Python實現計算無序大陣列的中位數演算法
中位數定義:對於有限的數集,可以透過把所有元素高低排序後找出正中間的一個作為中位數。如果觀察值有偶數個,通常取最中間的兩個數值的平均數作為中位數。
隨機獲取無序陣列中一個元素作為分割元素, 以分割元素為界限,將陣列分割大小陣列兩部分。
若“小”陣列的長度大於中位數索引值, 則基於“小”陣列繼續選取隨機值縮小其長度。
捨棄比中位數值小的元素, 以減少計算量,相應的中位數索引左移對應長度, 保證相對原始資料索引長度不變。
判斷無序陣列中該分割元素個數, 若大於新的中位數索引, 則該分割元素就是中位數。若小於則捨棄分割元素, 因此調整中位數的索引值,左移對應長度。
對“大""陣列重複上述計算。
測試環境:
測試結果:
同時,由於隨機抽取元素,進行計算,演算法表現穩定性不是很好。
Python實現計算無序大陣列的中位數演算法
中位數定義:對於有限的數集,可以透過把所有元素高低排序後找出正中間的一個作為中位數。如果觀察值有偶數個,通常取最中間的兩個數值的平均數作為中位數。
實現思路隨機獲取無序陣列中一個元素作為分割元素, 以分割元素為界限,將陣列分割大小陣列兩部分。
若“小”陣列的長度大於中位數索引值, 則基於“小”陣列繼續選取隨機值縮小其長度。
捨棄比中位數值小的元素, 以減少計算量,相應的中位數索引左移對應長度, 保證相對原始資料索引長度不變。
判斷無序陣列中該分割元素個數, 若大於新的中位數索引, 則該分割元素就是中位數。若小於則捨棄分割元素, 因此調整中位數的索引值,左移對應長度。
對“大""陣列重複上述計算。
Python實現測試結果測試環境:
測試結果:
同時,由於隨機抽取元素,進行計算,演算法表現穩定性不是很好。