如何使用Python求無序大數組的中位數?
Python實現計算無序大數組的中位數算法
中位數定義:對于有限的數集,可以通過把所有元素高低排序后找出正中間的一個作為中位數。如果觀察值有偶數個,通常取最中間的兩個數值的平均數作為中位數。
實現思路隨機獲取無序數組中一個元素作為分割元素, 以分割元素為界限,將數組分割大小數組兩部分。
若“小”數組的長度大于中位數索引值, 則基于“小”數組繼續選取隨機值縮小其長度。
舍棄比中位數值小的元素, 以減少計算量,相應的中位數索引左移對應長度, 保證相對原始數據索引長度不變。
判斷無序數組中該分割元素個數, 若大于新的中位數索引, 則該分割元素就是中位數。若小于則舍棄分割元素, 因此調整中位數的索引值,左移對應長度。
對“大""數組重復上述計算。
Python實現測試結果測試環境:
測試結果:
同時,由于隨機抽取元素,進行計算,算法表現穩定性不是很好。
若對您有所幫助,歡迎大家評論、留言。