JavaScript 方陣最大值和最小值程式
要查詢最大或最小元素,我們必須關注我們將進行的比較次數,以及哪種方法是有效的比較方法:使用 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,但兩種方法的空間複雜度相同。
資料結構
網路
關係資料庫管理系統
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP