Escriba un programa para encontrar el menor de tres enteros, sin utilizar ninguno de los operadores de comparación.
Sean 3 números de entrada x, y y z.
Método 1 (Resta repetida)
Tome una variable de contador c e inicialícela con 0. En un ciclo, reste repetidamente x, y y z en 1 e incremente c. El número que primero se convierte en 0 es el más pequeño. Después de que termine el ciclo, c contendrá el mínimo de 3.
C++
// C++ program to find Smallest // of three integers without // comparison operators #include <bits/stdc++.h> using namespace std; int smallest(int x, int y, int z) { int c = 0; while (x && y && z) { x--; y--; z--; c++; } return c; } // Driver Code int main() { int x = 12, y = 15, z = 5; cout << "Minimum of 3 numbers is " << smallest(x, y, z); return 0; } // This code is contributed // by Akanksha Rai
C
// C program to find Smallest // of three integers without // comparison operators #include <stdio.h> int smallest(int x, int y, int z) { int c = 0; while (x && y && z) { x--; y--; z--; c++; } return c; } int main() { int x = 12, y = 15, z = 5; printf("Minimum of 3 numbers is %d", smallest(x, y, z)); return 0; }
Java
// Java program to find Smallest // of three integers without // comparison operators class GFG { static int smallest(int x, int y, int z) { int c = 0; while (x != 0 && y != 0 && z != 0) { x--; y--; z--; c++; } return c; } public static void main(String[] args) { int x = 12, y = 15, z = 5; System.out.printf("Minimum of 3" + " numbers is %d", smallest(x, y, z)); } } // This code is contributed by Smitha Dinesh Semwal.
Python3
# Python3 program to find Smallest # of three integers without # comparison operators def smallest(x, y, z): c = 0 while ( x and y and z ): x = x-1 y = y-1 z = z-1 c = c + 1 return c # Driver Code x = 12 y = 15 z = 5 print("Minimum of 3 numbers is", smallest(x, y, z)) # This code is contributed by Anshika Goyal
C#
// C# program to find Smallest of three // integers without comparison operators using System; class GFG { static int smallest(int x, int y, int z) { int c = 0; while (x != 0 && y != 0 && z != 0) { x--; y--; z--; c++; } return c; } // Driver Code public static void Main() { int x = 12, y = 15, z = 5; Console.Write("Minimum of 3" + " numbers is " + smallest(x, y, z)); } } // This code is contributed by Sam007
PHP
<?php // php program to find Smallest // of three integers without // comparison operators function smallest($x, $y, $z) { $c = 0; while ( $x && $y && $z ) { $x--; $y--; $z--; $c++; } return $c; } // Driver code $x = 12; $y = 15; $z = 5; echo "Minimum of 3 numbers is ". smallest($x, $y, $z); // This code is contributed by Sam007 ?>
Javascript
<script> // JavaScript program to find Smallest // of three integers without // comparison operators function smallest(x, y, z) { let c = 0; while (x && y && z) { x--; y--; z--; c++; } return c; } // Driver Code let x = 12, y = 15, z = 5; document.write("Minimum of 3 numbers is " + smallest(x, y, z)); // This code is contributed by Surbhi Tyagi. </script>
Producción:
Minimum of 3 numbers is 5
Complejidad del tiempo: O(min(x, y, z))
Espacio Auxiliar: O(1)
Este método no funciona para números negativos. El método 2 también funciona para números negativos.
Método 2 (Usar operaciones con bits)
Use el método 2 de esta publicación para encontrar un mínimo de dos números (no podemos usar el Método 1 ya que el Método 1 usa el operador de comparación). Una vez que tengamos la funcionalidad para encontrar un mínimo de 2 números, podemos usar esto para encontrar un mínimo de 3 números.
C++
// C++ implementation of above approach #include <bits/stdc++.h> using namespace std; #define CHAR_BIT 8 /*Function to find minimum of x and y*/ int min(int x, int y) { return y + ((x - y) & ((x - y) >> (sizeof(int) * CHAR_BIT - 1))); } /* Function to find minimum of 3 numbers x, y and z*/ int smallest(int x, int y, int z) { return min(x, min(y, z)); } // Driver code int main() { int x = 12, y = 15, z = 5; cout << "Minimum of 3 numbers is " << smallest(x, y, z); return 0; } // This code is contributed by Code_Mech.
C
// C implementation of above approach #include <stdio.h> #define CHAR_BIT 8 /*Function to find minimum of x and y*/ int min(int x, int y) { return y + ((x - y) & ((x - y) >> (sizeof(int) * CHAR_BIT - 1))); } /* Function to find minimum of 3 numbers x, y and z*/ int smallest(int x, int y, int z) { return min(x, min(y, z)); } int main() { int x = 12, y = 15, z = 5; printf("Minimum of 3 numbers is %d", smallest(x, y, z)); return 0; }
Java
// Java implementation of above approach class GFG { static int CHAR_BIT = 8; // Function to find minimum of x and y static int min(int x, int y) { return y + ((x - y) & ((x - y) >> ((Integer.SIZE/8) * CHAR_BIT - 1))); } // Function to find minimum of 3 numbers x, y and z static int smallest(int x, int y, int z) { return Math.min(x, Math.min(y, z)); } // Driver code public static void main (String[] args) { int x = 12, y = 15, z = 5; System.out.println("Minimum of 3 numbers is " + smallest(x, y, z)); } } // This code is contributed by mits
Python3
# Python3 implementation of above approach CHAR_BIT = 8 # Function to find minimum of x and y def min(x, y): return y + ((x - y) & \ ((x - y) >> (32 * CHAR_BIT - 1))) # Function to find minimum # of 3 numbers x, y and z def smallest(x, y, z): return min(x, min(y, z)) # Driver code x = 12 y = 15 z = 5 print("Minimum of 3 numbers is ", smallest(x, y, z)) # This code is contributed # by Mohit Kumar
C#
// C# implementation of above approach using System; class GFG { static int CHAR_BIT=8; /*Function to find minimum of x and y*/ static int min(int x, int y) { return y + ((x - y) & ((x - y) >> (sizeof(int) * CHAR_BIT - 1))); } /* Function to find minimum of 3 numbers x, y and z*/ static int smallest(int x, int y, int z) { return Math.Min(x, Math.Min(y, z)); } // Driver code static void Main() { int x = 12, y = 15, z = 5; Console.WriteLine("Minimum of 3 numbers is "+smallest(x, y, z)); } } // This code is contributed by mits
Javascript
<script> let CHAR_BIT = 8; // Function to find minimum of x and y function min(x,y) { return y + ((x - y) & ((x - y) >> (32 * CHAR_BIT - 1))) } // Function to find minimum of 3 numbers x, y and z function smallest(x,y,z) { return Math.min(x, Math.min(y, z)); } // Driver code let x = 12, y = 15, z = 5; document.write("Minimum of 3 numbers is " + smallest(x, y, z)); // This code is contributed by avanitrachhadiya2155 </script>
Producción:
Minimum of 3 numbers is 5
Complejidad de tiempo: O(1)
Espacio Auxiliar: O(1)
Método 3 (usar el operador de división)
También podemos usar el operador de división para encontrar un mínimo de dos números. Si el valor de (a/b) es cero, entonces b es mayor que a, de lo contrario, a es mayor. Gracias a gopinath y Vignesh por sugerir este método.
C++
// C++ implementation of above approach #include <bits/stdc++.h> using namespace std; // Using division operator to find // minimum of three numbers int smallest(int x, int y, int z) { if (!(y / x)) // Same as "if (y < x)" return (!(y / z)) ? y : z; return (!(x / z)) ? x : z; } int main() { int x = 78, y = 88, z = 68; cout << "Minimum of 3 numbers is " << smallest(x, y, z); return 0; } // this code is contributed by shivanisinghss2110
C
#include <stdio.h> // Using division operator to find // minimum of three numbers int smallest(int x, int y, int z) { if (!(y / x)) // Same as "if (y < x)" return (!(y / z)) ? y : z; return (!(x / z)) ? x : z; } int main() { int x = 78, y = 88, z = 68; printf("Minimum of 3 numbers is %d", smallest(x, y, z)); return 0; }
Java
// Java program of above approach class GfG { // Using division operator to // find minimum of three numbers static int smallest(int x, int y, int z) { if ((y / x) != 1) // Same as "if (y < x)" return ((y / z) != 1) ? y : z; return ((x / z) != 1) ? x : z; } // Driver code public static void main(String[] args) { int x = 78, y = 88, z = 68; System.out.printf("Minimum of 3 numbers" + " is %d", smallest(x, y, z)); } } // This code has been contributed by 29AjayKumar
python3
# Using division operator to find # minimum of three numbers def smallest(x, y, z): if (not (y / x)): # Same as "if (y < x)" return y if (not (y / z)) else z return x if (not (x / z)) else z # Driver Code if __name__== "__main__": x = 78 y = 88 z = 68 print("Minimum of 3 numbers is", smallest(x, y, z)) # This code is contributed # by ChitraNayal
C#
// C# program of above approach using System; public class GfG { // Using division operator to // find minimum of three numbers static int smallest(int x, int y, int z) { if ((y / x) != 1) // Same as "if (y < x)" return ((y / z) != 1) ? y : z; return ((x / z) != 1) ? x : z; } // Driver code public static void Main() { int x = 78, y = 88, z = 68; Console.Write("Minimum of 3 numbers" + " is {0}", smallest(x, y, z)); } } /* This code contributed by PrinciRaj1992 */
Javascript
<script> // Javascript implementation of above approach // Using division operator to find // minimum of three numbers function smallest(x, y, z) { if (!(y / x)) // Same as "if (y < x)" return (!(y / z)) ? y : z; return (!(x / z)) ? x : z; } let x = 78, y = 88, z = 68; document.write("Minimum of 3 numbers is " + smallest(x, y, z)); // This is code is contributed by Mayank Tyagi </script>
Producción:
Minimum of 3 numbers is 68
Complejidad de tiempo: O(1)
Espacio Auxiliar: O(1)
Escriba comentarios si encuentra que los códigos/algoritmos anteriores son incorrectos o encuentra otras formas de resolver el mismo problema.
Publicación traducida automáticamente
Artículo escrito por GeeksforGeeks-1 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA