JavaScript 中陣列的中位數計算


在這個問題陳述中,我們的任務是藉助 Javascript 功能來計算陣列的中位數。有多種方法可以用來解決此任務。一種計算中位數的簡單方法是使用 Javascript 的內建函式。

理解問題陳述

問題陳述是在 Javascript 中編寫一個函式,該函式將幫助計算給定陣列的中位數。例如,如果我們有一個整數陣列 [1, 2, 3, 4, 5],那麼這個陣列的中位數是 3。因為 3 是陣列的中間元素。

給定問題的邏輯

對於程式碼,我們將建立一個函式來查詢陣列的中位數。在函式內部,我們將透過將陣列的長度除以 2 來計算陣列的中間索引。如果陣列具有奇數個元素,則此索引將是陣列中中位數的索引。如果陣列具有偶數個數組,則中位數的索引將位於中位數的左側。

然後,我們將使用 sort() 方法按升序對陣列進行排序,該方法將採用比較函式作為引數。如果陣列的長度為偶數,則我們將返回兩個中間值的平均值。我們將透過將中間索引和中間左側索引處的數值相加,然後將和除以 2 來做到這一點。如果陣列的長度為奇數,則我們將簡單地返回中間值。

演算法

步驟 1 - 宣告一個名為 median 的函式,該函式使用陣列引數。

步驟 2 - 透過將陣列的長度除以 2 來計算陣列的中點。它將顯示中間元素的索引。

步驟 3 - 使用 sort 方法對給定陣列進行排序。

步驟 4 - 如果陣列長度為偶數,則返回左側中間值。

步驟 5 - 將結果作為陣列的中間元素返回。

演算法程式碼

//function to find the median of the given array
function median(arr) {
   const mid = Math.floor(arr.length / 2);
   const sortedArr = arr.sort((a, b) => a - b);
 
   if (arr.length % 2 === 0) {
      return (sortedArr[mid - 1] + sortedArr[mid]) / 2;
   } else {
      return sortedArr[mid];
   }
}
const arr = [11, 12, 13, 14, 15, 16, 17, 18, 19];
console.log(median(arr));

複雜度

函式花費的時間為 O(n log n),因為我們使用了 sort 方法,該方法執行快速排序,而快速排序需要 O(n log n) 的時間來對元素進行排序。其中 n 是給定陣列的大小。程式碼使用的空間為 O(1),因為它僅將結果儲存為陣列的中間元素。

結論

實現的程式碼為找出給定陣列的中位數提供了一個簡單而有效的解決方案。建立的函式花費的時間為 O(n log n)。可能存在給定陣列已排序的情況,在這種情況下,時間複雜度將為 O(n),因為它需要線性時間。

更新於: 2023年5月18日

3K+ 次瀏覽

開啟你的 職業生涯

透過完成課程獲得認證

開始學習
廣告

© . All rights reserved.