回覆列表
  • 1 # 軟體測試開發技術棧

    Python實現計算無序大陣列的中位數演算法

    中位數定義:對於有限的數集,可以透過把所有元素高低排序後找出正中間的一個作為中位數。如果觀察值有偶數個,通常取最中間的兩個數值的平均數作為中位數。

    實現思路

    隨機獲取無序陣列中一個元素作為分割元素, 以分割元素為界限,將陣列分割大小陣列兩部分。

    若“小”陣列的長度大於中位數索引值, 則基於“小”陣列繼續選取隨機值縮小其長度。

    捨棄比中位數值小的元素, 以減少計算量,相應的中位數索引左移對應長度, 保證相對原始資料索引長度不變。

    判斷無序陣列中該分割元素個數, 若大於新的中位數索引, 則該分割元素就是中位數。若小於則捨棄分割元素, 因此調整中位數的索引值,左移對應長度。

    對“大""陣列重複上述計算。

    Python實現測試結果

    測試環境:

    測試結果:

    同時,由於隨機抽取元素,進行計算,演算法表現穩定性不是很好。

  • 中秋節和大豐收的關聯?
  • 有說法說過去現在和未來都是同時存在的,要真是這樣,我們努力的意義是什麼呢?