Define a function int max(int a[], int n) which returns the largest integer from an integer array consisting of n elements (without using conditionals / bitwise / ternary operators / library function to find largest
Examples:
Input : arr[] = {16, 14, 15, 17, 9} Output : 17 Input : arr[] = {10, 13, 11, 13} Output : 13
The idea is similar to Maximum of four numbers.
We use the fact that value of “(x – y + abs(x – y))” will be 0 of x is less than or equal to y. We use this value as index in an array of size 2 to pick maximum. Once we have found maximum of two elements, we can use same technique for finding maximum of all.
Implementation:
C++
// CPP program to find largest in an array // without conditional/bitwise/ternary/ operators // and without library functions. #include <bits/stdc++.h> using namespace std;
int maxArray( int a[], int n)
{ int tmp[2];
tmp[0] = a[0];
for ( int i = 1; i < n; i++) {
tmp[1] = a[i];
swap(tmp[0], tmp[ bool ( abs (tmp[1] - tmp[0]) +
tmp[1] - tmp[0])]);
}
return tmp[0];
} // Driver code int main()
{ int a[] = { 15, 11, 17, 16, 10 };
int n = sizeof (a) / sizeof (a[0]);
cout << maxArray(a, n);
return 0;
} |
Java
// JAVA program to find largest in an array // without conditional/bitwise/ternary/ operators // and without library functions. import java.util.*;
class GFG
{ static int maxArray( int a[], int n)
{ int []tmp = new int [ 2 ];
tmp[ 0 ] = a[ 0 ];
for ( int i = 1 ; i < n- 1 ; i++) {
tmp[ 1 ] = a[i];
int temp = tmp[ 0 ];
tmp[ 0 ] = tmp[(Math.abs(tmp[ 1 ] - tmp[ 0 ]) +
tmp[ 1 ] - tmp[ 0 ])% 2 + 1 ];
tmp[(Math.abs(tmp[ 1 ] - tmp[ 0 ]) +
tmp[ 1 ] - tmp[ 0 ])% 2 + 1 ] = temp;
}
return tmp[ 1 ];
} // Driver code public static void main(String[] args)
{ int a[] = { 15 , 11 , 17 , 16 , 10 };
int n =a.length;
System.out.print(maxArray(a, n));
} } // This code is contributed by umadevi9616 |
Python3
# Python 3 program to find largest in an array # without conditional/bitwise/ternary/ operators # and without library functions. def maxArray(a, n):
tmp = [a[i] for i in range ( len (a))]
tmp[ 0 ] = a[ 0 ]
for i in range ( 1 ,n, 1 ):
tmp[ 1 ] = a[i]
temp = tmp[ int ( bool ( abs (tmp[ 1 ] - tmp[ 0 ]) +
tmp[ 1 ] - tmp[ 0 ]))]
tmp[ int ( bool ( abs (tmp[ 1 ] - tmp[ 0 ]) +
tmp[ 1 ] - tmp[ 0 ]))] = tmp[ 0 ]
tmp[ 0 ] = temp
return tmp[ 0 ]
# Driver code if __name__ = = '__main__' :
a = [ 15 , 11 , 17 , 16 , 10 ]
n = len (a)
print (maxArray(a, n))
# This code is contributed by # Surendra_Gangwar |
C#
// C# program to find largest in an array // without conditional/bitwise/ternary/ operators // and without library functions. using System;
public class GFG {
static int maxArray( int [] a, int n)
{
int [] tmp = new int [2];
tmp[0] = a[0];
for ( int i = 1; i < n - 1; i++) {
tmp[1] = a[i];
int temp = tmp[0];
tmp[0] = tmp[(Math.Abs(tmp[1] - tmp[0]) + tmp[1]
- tmp[0]) % 2 + 1];
tmp[(Math.Abs(tmp[1] - tmp[0]) + tmp[1]
- tmp[0]) % 2 + 1] = temp;
}
return tmp[1];
}
// Driver code
public static void Main(String[] args)
{
int [] a = { 15, 11, 17, 16, 10 };
int n = a.Length;
Console.Write(maxArray(a, n));
}
} // This code is contributed by umadevi9616 |
Javascript
<script> // JavaScript program to find largest in an array // without conditional/bitwise/ternary/ operators // and without library functions. function maxArray(a, n)
{ var tmp = new Array(2);
tmp[0] = a[0];
for ( var i = 1; i < n-1; i++) {
tmp[1] = a[i];
var temp = tmp[0];
tmp[0] = tmp[(Math.abs(tmp[1] - tmp[0]) +
tmp[1] - tmp[0])%2+1];
tmp[(Math.abs(tmp[1] - tmp[0]) +
tmp[1] - tmp[0])%2+1] = temp;
}
return tmp[1];
} // Driver code var a = [ 15, 11, 17, 16, 10 ];
var n =a.length;
document.write(maxArray(a, n));
// This code is contributed by shivanisinghss2110 </script> |
Output
17