平方矩阵中的最大值和最小值。

给定一个n*n阶方阵,从给定的矩阵中求出最大值和最小值。

null

例如:

Input : arr[][] = {5, 4, 9,                   2, 0, 6,                   3, 1, 8};Output : Maximum = 9, Minimum = 0Input : arr[][] = {-5, 3,                    2, 4};Output : Maximum = 4, Minimum = -5

天真的方法: 我们使用线性搜索分别求出矩阵的最大值和最小值。需要比较的数量为n 2. 求最小值和n 2. 寻找最大元素。总比较值等于2n 2. .

配对比较(有效方法): 从矩阵中选择两个元素,一个从矩阵的一行开始,另一个从矩阵的同一行结束,比较它们,然后比较较小的元素与矩阵的最小值,较大的元素与矩阵的最大值。我们可以看到,对于两个元素,我们需要3个比较,所以对于遍历整个矩阵,我们需要3/2N 2. 比较。

注: 这是本文方法3的扩展形式 数组的最大值和最小值。

C++

// C++ program for finding maximum and minimum in
// a matrix.
#include<bits/stdc++.h>
using namespace std;
#define MAX 100
// Finds maximum and minimum in arr[0..n-1][0..n-1]
// using pair wise comparisons
void maxMin( int arr[][MAX], int n)
{
int min = INT_MAX;
int max = INT_MIN;
// Traverses rows one by one
for ( int i = 0; i < n; i++)
{
for ( int j = 0; j <= n/2; j++)
{
// Compare elements from beginning
// and end of current row
if (arr[i][j] > arr[i][n-j-1])
{
if (min > arr[i][n-j-1])
min = arr[i][n-j-1];
if (max< arr[i][j])
max = arr[i][j];
}
else
{
if (min > arr[i][j])
min = arr[i][j];
if (max< arr[i][n-j-1])
max = arr[i][n-j-1];
}
}
}
cout << "Maximum = " << max;
<< ", Minimum = " << min;
}
/* Driver program to test above function */
int main()
{
int arr[MAX][MAX] = {5, 9, 11,
25, 0, 14,
21, 6, 4};
maxMin(arr, 3);
return 0;
}


JAVA

// Java program for finding maximum
// and minimum in a matrix.
class GFG
{
static final int MAX = 100 ;
// Finds maximum and minimum
// in arr[0..n-1][0..n-1]
// using pair wise comparisons
static void maxMin( int arr[][], int n)
{
int min = + 2147483647 ;
int max = - 2147483648 ;
// Traverses rows one by one
for ( int i = 0 ; i < n; i++)
{
for ( int j = 0 ; j <= n/ 2 ; j++)
{
// Compare elements from beginning
// and end of current row
if (arr[i][j] > arr[i][n - j - 1 ])
{
if (min > arr[i][n - j - 1 ])
min = arr[i][n - j - 1 ];
if (max< arr[i][j])
max = arr[i][j];
}
else
{
if (min > arr[i][j])
min = arr[i][j];
if (max< arr[i][n - j - 1 ])
max = arr[i][n - j - 1 ];
}
}
}
System.out.print( "Maximum = " +max+
", Minimum = " +min);
}
// Driver program
public static void main (String[] args)
{
int arr[][] = {{ 5 , 9 , 11 },
{ 25 , 0 , 14 },
{ 21 , 6 , 4 }};
maxMin(arr, 3 );
}
}
// This code is contributed by Anant Agarwal.


Python3

# Python3 program for finding
# MAXimum and MINimum in a matrix.
MAX = 100
# Finds MAXimum and MINimum in arr[0..n-1][0..n-1]
# using pair wise comparisons
def MAXMIN(arr, n):
MIN = 10 * * 9
MAX = - 10 * * 9
# Traverses rows one by one
for i in range (n):
for j in range (n / / 2 + 1 ):
# Compare elements from beginning
# and end of current row
if (arr[i][j] > arr[i][n - j - 1 ]):
if ( MIN > arr[i][n - j - 1 ]):
MIN = arr[i][n - j - 1 ]
if ( MAX < arr[i][j]):
MAX = arr[i][j]
else :
if ( MIN > arr[i][j]):
MIN = arr[i][j]
if ( MAX < arr[i][n - j - 1 ]):
MAX = arr[i][n - j - 1 ]
print ( "MAXimum =" , MAX , ", MINimum =" , MIN )
# Driver Code
arr = [[ 5 , 9 , 11 ],
[ 25 , 0 , 14 ],
[ 21 , 6 , 4 ]]
MAXMIN(arr, 3 )
# This code is contributed by Mohit Kumar


C#

// C# program for finding maximum
// and minimum in a matrix.
using System;
public class GFG {
// Finds maximum and minimum
// in arr[0..n-1][0..n-1]
// using pair wise comparisons
static void maxMin( int [,] arr, int n)
{
int min = +2147483647;
int max = -2147483648;
// Traverses rows one by one
for ( int i = 0; i < n; i++)
{
for ( int j = 0; j <= n/2; j++)
{
// Compare elements from beginning
// and end of current row
if (arr[i,j] > arr[i,n - j - 1])
{
if (min > arr[i,n - j - 1])
min = arr[i,n - j - 1];
if (max < arr[i,j])
max = arr[i,j];
}
else
{
if (min > arr[i,j])
min = arr[i,j];
if (max < arr[i,n - j - 1])
max = arr[i,n - j - 1];
}
}
}
Console.Write( "Maximum = " + max +
", Minimum = " + min);
}
// Driver code
static public void Main ()
{
int [,] arr = { {5, 9, 11},
{25, 0, 14},
{21, 6, 4} };
maxMin(arr, 3);
}
}
// This code is contributed by Shrikant13.


PHP

<?php
// PHP program for finding
// maximum and minimum in
// a matrix.
$MAX = 100;
// Finds maximum and minimum
// in arr[0..n-1][0..n-1]
// using pair wise comparisons
function maxMin( $arr , $n )
{
$min = PHP_INT_MAX;
$max = PHP_INT_MIN;
// Traverses rows one by one
for ( $i = 0; $i < $n ; $i ++)
{
for ( $j = 0; $j <= $n / 2; $j ++)
{
// Compare elements from beginning
// and end of current row
if ( $arr [ $i ][ $j ] > $arr [ $i ][ $n - $j - 1])
{
if ( $min > $arr [ $i ][ $n - $j - 1])
$min = $arr [ $i ][ $n - $j - 1];
if ( $max < $arr [ $i ][ $j ])
$max = $arr [ $i ][ $j ];
}
else
{
if ( $min > $arr [ $i ][ $j ])
$min = $arr [ $i ][ $j ];
if ( $max < $arr [ $i ][ $n - $j - 1])
$max = $arr [ $i ][ $n - $j - 1];
}
}
}
echo "Maximum = " , $max
, ", Minimum = " , $min ;
}
// Driver Code
$arr = array ( array (5, 9, 11),
array (25, 0, 14),
array (21, 6, 4));
maxMin( $arr , 3);
// This code is contributed by anuj_67.
?>


Javascript

<script>
// Javascript program for finding maximum
// and minimum in a matrix.
let MAX = 100;
// Finds maximum and minimum
// in arr[0..n-1][0..n-1]
// using pair wise comparisons
function maxMin(arr,n)
{
let min = +2147483647;
let max = -2147483648;
// Traverses rows one by one
for (let i = 0; i < n; i++)
{
for (let j = 0; j <= n / 2; j++)
{
// Compare elements from beginning
// and end of current row
if (arr[i][j] > arr[i][n - j - 1])
{
if (min > arr[i][n - j - 1])
min = arr[i][n - j - 1];
if (max< arr[i][j])
max = arr[i][j];
}
else
{
if (min > arr[i][j])
min = arr[i][j];
if (max < arr[i][n - j - 1])
max = arr[i][n - j - 1];
}
}
}
document.write( "Maximum = " + max +
", Minimum = " + min);
}
// Driver Code
let arr = [ [ 5, 9, 11 ],
[ 25, 0, 14 ],
[ 21, 6, 4 ] ];
maxMin(arr, 3);
// This code is contributed by sravan kumar
</script>


输出:

Maximum = 25, Minimum = 0

本文由 希瓦姆·普拉丹(anuj_charm) .如果你喜欢GeekSforgek,并想贡献自己的力量,你也可以使用 写极客。组织 或者把你的文章寄到contribute@geeksforgeeks.org.看到你的文章出现在Geeksforgeks主页上,并帮助其他极客。 如果您发现任何不正确的地方,或者您想分享有关上述主题的更多信息,请写下评论。

© 版权声明
THE END
喜欢就支持一下吧
点赞5 分享