Среднее из трех с использованием минимума сравнений
Учитывая три различных числа a, b и c, найдите число со значением посередине.
Примеры :
Ввод: a = 20, b = 30, c = 40. Выход: 30 Ввод: a = 12, n = 32, c = 11 Выход: 12
Простой подход:
C ++
// CPP program to find middle of three distinct// numbers#include <bits/stdc++.h>using namespace std;int middleOfThree( int a, int b, int c){ // Checking for b if ((a < b && b < c) || (c < b && b < a)) return b; // Checking for a else if ((b < a && a < c) || (c < a && a < b)) return a; else return c;}// Driver Codeint main(){ int a = 20, b = 30, c = 40; cout << middleOfThree(a, b, c); return 0;} |
Джава
// Java program to find middle of// three distinct numbersimport java.util.*;class Middle{ // Function to find the middle of three number public static int middleOfThree( int a, int b, int c) { // Checking for b if ((a < b && b < c) || (c < b && b < a)) return b; // Checking for a else if ((b < a && a < c) || (c < a && a < b)) return a; else return c; } // driver code public static void main(String[] args) { int a = 20 , b = 30 , c = 40 ; System.out.println( middleOfThree(a, b, c) ); }}// This code is contributed by rishabh_jain |
Python3
# Python3 program to find middle# of three distinct numbersdef middleOfThree(a, b, c): # Checking for b if ((a < b and b < c) or (c < b and b < a)) : return b; # Checking for a if ((b < a and a < c) or (c < a and a < b)) : return a; else : return c# Driver Codea = 20b = 30c = 40print (middleOfThree(a, b, c))# This code is contributed by rishabh_jain |
C #
// C# program to find middle of// three distinct numbersusing System;class Middle{ // Function to find the middle of three number public static int middleOfThree( int a, int b, int c) { // Checking for b if ((a < b && b < c) || (c < b && b < a)) return b; // Checking for a else if ((b < a && a < c) || (c < a && a < b)) return a; else return c; } // Driver code public static void Main() { int a = 20, b = 30, c = 40; Console.WriteLine( middleOfThree(a, b, c) ); }}// This code is contributed by vt_m |
PHP
<?php// PHP program to find middle// of three distinct numbersfunction middleOfThree( $a , $b , $c ){ // Checking for b if (( $a < $b && $b < $c ) or ( $c < $b && $b < $a )) return $b ; // Checking for a else if (( $b < $a and $a < $c ) or ( $c < $a and $a < $b )) return $a ; else return $c ;} // Driver Code $a = 20; $b = 30; $c = 40; echo middleOfThree( $a , $b , $c ); // This code is contributed by anuj_67.?> |
Javascript
<script>// Javascript program to find middle of three distinct// numbersfunction middleOfThree( a, b, c){ // Checking for b if ((a < b && b < c) || (c < b && b < a)) return b; // Checking for a else if ((b < a && a < c) || (c < a && a < b)) return a; else return c;} // driver code let a = 20, b = 30, c = 40; document.write(middleOfThree(a, b, c)); </script> |
Выход :
30
Но использованный выше подход неэффективен из-за лишних сравнений, которые можно легко минимизировать. Если первая часть ложна, она выполнит оставшуюся половину, чтобы проверить условие. Эта проблема остается тем же , если мы проверяем , на также.
Лучший подход (требует меньшего сравнения):
Выход:
30
Такой подход эффективен и требует меньшего количества сравнений. Внешний цикл IF будет выполнен, только если a> b, в противном случае будет выполнен внешний цикл ELSE.
Другой эффективный подход:
C ++
// CPP program to find middle of three distinct// numbers#include <bits/stdc++.h>using namespace std;// Function to find the middle of three numberint middleOfThree( int a, int b, int c){ // x is positive if a is greater than b. // x is negative if b is greater than a. int x = a - b; int y = b - c; // Similar to x int z = a - c; // Similar to x and y. // Checking if b is middle (x and y both // are positive) if (x * y > 0) return b; // Checking if c is middle (x and z both // are positive) else if (x * z > 0) return c; else return a;}// Driver Codeint main(){ int a = 20, b = 30, c = 40; cout << middleOfThree(a, b, c); return 0;} |
Джава
//java program to find middle of three distinct// numbersimport java.util.*;class Middle{ // Function to find the middle of three number public static int middleOfThree( int a, int b, int c) { // x is positive if a is greater than b. // x is negative if b is greater than a. int x = a - b; int y = b - c; // Similar to x int z = a - c; // Similar to x and y. // Checking if b is middle (x and y // both are positive) if (x * y > 0 ) return b; // Checking if c is middle (x and z // both are positive) else if (x * z > 0 ) return c; else return a; } // driver code public static void main(String[] args) { int a = 20 , b = 30 , c = 40 ; System.out.println( middleOfThree(a, b, c) ); }}// This code is contributed by rishabh_jain |
Python3
# Python3 program to find middle# of three distinct numbers# Function to find the middle of three numberdef middleOfThree(a, b, c) : # x is positive if a is greater than b. # x is negative if b is greater than a. x = a - b # Similar to x y = b - c # Similar to x and y. z = a - c # Checking if b is middle (x and y # both are positive) if x * y > 0 : return b # Checking if c is middle (x and z # both are positive) elif (x * z > 0 ) : return else : return a# Driver Codea = 20b = 30c = 40print (middleOfThree(a, b, c))# This code is contributed by rishabh_jain |
C #
//C# program to find middle of three distinct// numbersusing System;class Middle{ // Function to find the middle of three number public static int middleOfThree( int a, int b, int c) { // x is positive if a is greater than b. // x is negative if b is greater than a. int x = a - b; // Similar to x int y = b - c; // Similar to x and y. int z = a - c; // Checking if b is middle (x and y // both are positive) if (x * y > 0) return b; // Checking if c is middle (x and z // both are positive) else if (x * z > 0) return c; else return a; } // Driver code public static void Main() { int a = 20, b = 30, c = 40; Console.WriteLine( middleOfThree(a, b, c) ); }}// This code is contributed by vt_m |
PHP
<?php// PHP program to find middle// of three distinct numbers// Function to find the// middle of three numberfunction middleOfThree( $a , $b , $c ){ // x is positive if a // is greater than b. // x is negative if b // is greater than a. $x = $a - $b ; // Similar to x $y = $b - $c ; // Similar to x and y. $z = $a - $c ; // Checking if b is // middle (x and y both // are positive) if ( $x * $y > 0) return $b ; // Checking if c is // middle (x and z both // are positive) else if ( $x * $z > 0) return $c ; else return $a ;} // Driver Code $a = 20; $b = 30; $c = 40; echo middleOfThree( $a , $b , $c );// This code is contributed by anuj_67.?> |
Javascript
<script>// javascript program to find middle of// three distinct numbers // Function to find the middle of three number function middleOfThree(a, b, c) { // x is positive if a is greater than b. // x is negative if b is greater than a. let x = a - b; let y = b - c; // Similar to x let z = a - c; // Similar to x and y. // Checking if b is middle (x and y // both are positive) if (x * y > 0) return b; // Checking if c is middle (x and z // both are positive) else if (x * z > 0) return c; else return a; } // Driver code let a = 20, b = 30, c = 40; document.write( middleOfThree(a, b, c) );</script> |
Выход :
30
Вниманию читателя! Не прекращайте учиться сейчас. Освойте все важные концепции DSA с помощью самостоятельного курса DSA по доступной для студентов цене и будьте готовы к работе в отрасли. Чтобы завершить подготовку от изучения языка к DS Algo и многому другому, см. Полный курс подготовки к собеседованию .
Если вы хотите посещать живые занятия с отраслевыми экспертами, пожалуйста, обращайтесь к Geeks Classes Live и Geeks Classes Live USA.