Largest in array without using conditionals / bitwise / ternary operators
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++
#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];
}
int main()
{
int a[] = { 15, 11, 17, 16, 10 };
int n = sizeof (a) / sizeof (a[0]);
cout << maxArray(a, n);
return 0;
}
|
Java
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 ];
}
public static void main(String[] args)
{
int a[] = { 15 , 11 , 17 , 16 , 10 };
int n =a.length;
System.out.print(maxArray(a, n));
}
}
|
Python3
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 ]
if __name__ = = '__main__' :
a = [ 15 , 11 , 17 , 16 , 10 ]
n = len (a)
print (maxArray(a, n))
|
C#
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];
}
public static void Main(String[] args)
{
int [] a = { 15, 11, 17, 16, 10 };
int n = a.Length;
Console.Write(maxArray(a, n));
}
}
|
Javascript
<script>
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];
}
var a = [ 15, 11, 17, 16, 10 ];
var n =a.length;
document.write(maxArray(a, n));
</script>
|
Last Updated :
22 Jul, 2022
Like Article
Save Article
Share your thoughts in the comments
Please Login to comment...