在 JavaScript 中查詢未排序整數陣列中的最大值和最小值


在這個給定的問題陳述中,我們必須藉助 Javascript 功能在未排序的整數陣列中找到最大值和最小值。因此,我們將使用一個整數陣列,並從中找到最小值和最大值。

理解問題

我們的問題是在未排序的整數陣列中找到最大值和最小值。因此,在這個任務中,我們將看到 Javascript 的解決方案。藉助它,我們可以確定陣列中最大值和最小值,而無需對陣列進行排序。例如,假設我們有一個未排序的陣列 [11, 21, 14, 32, 20, 12],那麼在這個陣列中,最小數字是 11,最大數字是 32。

給定問題的邏輯

為了解決從未排序陣列中找到最小值和最大值的問題,我們將使用簡單的線性掃描技術。因此,我們首先將初始化兩個變數來儲存陣列的最小值和最大值。然後,我們將迭代其餘專案,並將每個專案與當前的最小值和最大值進行比較。如果我們找到了這些值,我們將更新相應的變數。在迭代過程結束時,我們將擁有陣列的最小值和最大值,而無需對陣列進行排序。

演算法

步驟 1:我們的任務是從給定的輸入陣列中找到最小值和最大值,而無需對陣列進行排序。因此,我們將定義一個名為 smallestAndLargest 的函式,在這個函式中,我們將傳遞一個引數陣列。

步驟 2:我們已經建立了函式和輸入陣列。現在,我們將定義一個條件來檢查陣列的長度是否為空,在這種情況下,我們將返回 null。

步驟 3:在上述條件之後,我們將宣告兩個變數來儲存陣列中最小值和最大值的值。並分別命名為 smallest 和 largest。用陣列的第一個專案初始化這些變數。

步驟 4:現在,我們將使用一個迴圈來迭代陣列中的數字,並檢查條件:如果當前專案小於最小數字,我們將把 smallest 的值更新為當前專案。

步驟 5:我們還將檢查最大數字的條件。如果當前專案大於最大數字,我們將用當前專案更新 largest 的值。

步驟 6:最後,我們將擁有陣列的最小值和最大值,因此返回這些值。

示例

// Function to find the smallest and largest number
function smallestAndLargest(arr) {
   if (arr.length === 0) {
      return null; // Empty array case
   }

   let smallest = arr[0];
   let largest = arr[0];

   for (let i = 1; i < arr.length; i++) {
      if (arr[i] < smallest) {
         smallest = arr[i];
      } else if (arr[i] > largest) {
         largest = arr[i];
      }
   }

   return { smallest, largest };
}

const nums = [4, 2, 9, 1, 7, 5];
const result = smallestAndLargest(nums);
console.log("Smallest:", result.smallest);
console.log("Largest:", result.largest);

輸出

Smallest: 1
Largest: 9

複雜度

在不排序陣列的情況下查詢陣列最小值和最大值的時間複雜度為 O(n),其中 n 是給定陣列的大小。因為我們已經遍歷每個專案一次以將其與當前最小值和最大值進行比較。因此,獲取這些值所需的時間與輸入大小成線性關係。程式碼的空間複雜度為 O(1),因為我們使用了兩個變數來儲存最小值和最大值。

結論

在這個解決方案中,我們學習瞭如何在不排序陣列的情況下查詢陣列的最小值和最大值。我們使用了 Javascript 的非常基本的功能來獲得具有線性時間複雜度的期望結果。

更新於:2023年8月14日

5000+ 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告