首頁  >  文章  >  web前端  >  JavaScript 程式求方陣中的最大值和最小值

JavaScript 程式求方陣中的最大值和最小值

WBOY
WBOY轉載
2023-09-02 23:21:021349瀏覽

JavaScript 程序求方阵中的最大值和最小值

要找到最大或最小元素,我們必須專注於要進行的比較次數以及選擇哪種方法進行比較最有效:使用if-else 語句比較元素的方法還是使用if- else 語句比較元素的方法作為內建的。我們將看到完整的程式碼實作和解釋。在本文中,我們將實作一個 JavaScript 程序,用於計算給定方陣中存在的最大和最小元素。

問題簡介

這個問題很簡單,但是深入研究會帶來一些值得學習的突出概念。

在這個問題中,我們得到一個矩陣,對於這個矩陣,我們必須找到其中存在的最大和最小元素。例如,如果矩陣是 -

Mat = [ 1, 3, 7,
   5, 2, 9, 
   2, 5, 1]

從上面的矩陣中,我們可以說 1 是最小或最小元素,而 9 是最大或最大元素。

讓我們透過程式碼實作來看看解決這個問題的方法 -

天真的方法

在這個方法中,我們將簡單地一次遍歷所有元素並檢查它們是否大於我們目前的元素。將遵循以下步驟 -

  • 首先,我們將建立一個函數來傳遞不同的矩陣並取得結果

  • 對於給定的矩陣,我們將取得其行和列,以便使用 for 迴圈遍歷它。

  • 我們將建立兩個變數來儲存最小和最大元素,並假設矩陣的元素小於等於此值,並將它們初始化為最小元素 1000000000。

  • 此外,我們將假設矩陣的元素大於或等於此值,從而將最大元素初始化為 -1000000000。

  • 使用 for 循環,我們將遍歷矩陣,對於每個索引,我們將使用兩個 if-else 條件。

  • 透過進行所需的比較,我們將更新最大值和最小值。

範例

// creating a function to get the minimum and maximum number
function min_max(matrix){

   // getting rows and columns of given matrix
   var rows = matrix.length
   var cols = matrix[0].length
   var min_ans = 1000000000
   var max_ans = -1000000000
   
   // traversing over the matrix
   for(var i = 0; i<rows; i++){
      for(var j = 0; j<cols; j++){
         if(min_ans > matrix[i][j]){
            min_ans = matrix[i][j];
         }
         if(max_ans < matrix[i][j]) {
            max_ans = matrix[i][j];
         }
      }
   }
   console.log("The maximum element present in the Matrix is: " + max_ans);
   console.log("The minimum element present in the Matrix is: " + min_ans);
}

// defining the matrix
Mat = [ [1, 3, 7],
[5, 2, 9],
[2, 5, 1] ]

// calling the function
min_max(Mat)

時間與空間複雜度

上述程式碼的時間複雜度為O(N*M),其中N和M分別是行和列。另外,空間複雜度為O(1)。

這裡的主要問題不是時間複雜度,而是我們進行比較的次數。在上面的程式碼中,我們進行了 N * M * 2 次比較,因為對於每個索引,我們都檢查了最小和最大元素。

比較有效的方法

此方法在大部分部分與上述方法類似,但對於比較部分,我們現在將透過更新一些 if-else 語句進行 3/2 * N* M 比較。讓我們看看程式碼 -

範例

// creating a function to get the minimum and maximum number
function min_max(matrix){

   // getting rows and columns of given matrix
   var rows = matrix.length
   var cols = matrix[0].length
   var min_ans = 1000000000
   var max_ans = -1000000000
   
   // traversing over the matrix
   for(var i = 0; i<rows; i++){
      for(var j = 0; j<=cols/2; j++){
         if (matrix[i][j] > matrix[i][rows - j - 1]){
            if (min_ans > matrix[i][cols - j - 1])
            min_ans = matrix[i][cols - j - 1];
            if (max_ans< matrix[i][j])
            max_ans = matrix[i][j];
         } else {
            if (min_ans > matrix[i][j])
            min_ans = matrix[i][j];
            if (max_ans < matrix[i][cols - j - 1])
            max_ans = matrix[i][cols - j - 1];
         }
      }
   }
   console.log("The maximum element present in the Matrix is: " + max_ans);
   console.log("The minimum element present in the Matrix is: " + min_ans);
}
// defining the matrix
Mat = [ [1, 3, 7],
[5, 2, 9],
[2, 5, 1] ]
// calling the function
min_max(Mat)

時間與空間複雜度

上述程式碼的時間複雜度為O(N*M),其中N和M分別是行和列。另外,空間複雜度為O(1)。

這裡的比較次數比之前少了,現在是 3/2 * (N*M)。

結論

在本教程中,我們將實作一個 JavaScript 程序,用於計算給定方陣中存在的最大和最小元素。我們遍歷了給定的矩陣,並將每個元素與儲存答案的變數進行比較。討論了兩種技術:一種的比較次數為 2*N*M,另一種的比較次數為 3/2 *N*M,但這兩種方法具有相同的空間複雜度。

以上是JavaScript 程式求方陣中的最大值和最小值的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文轉載於:tutorialspoint.com。如有侵權,請聯絡admin@php.cn刪除