Declaración del problema: Dados dos enteros m y n. El objetivo es simplemente intercambiar sus valores en el bloque de memoria y escribir los enfoques de demostración del código Java.
Ilustración:
Input : m=9, n=5 Output : m=5, n=9 Input : m=15, n=5 Output : m=5, n=15 Here 'm' and 'n' are integer value
Enfoques:
Hay 3 enfoques estándar para intercambiar números que varían según la complejidad del espacio y el tiempo.
- Creación de una celda de memoria auxiliar en la memoria.
- Sin crear ninguna celda de memoria auxiliar (adicional)
- Uso del operador OR exclusivo (XOR bit a bit)
Los enfoques se describen a continuación individualmente en el mismo orden que se enumeran anteriormente:
Enfoque 1: intercambiar los valores usando la tercera variable
Se creará una celda de memoria en la memoria del mismo tipo ocupando la misma memoria en el área de pila de la memoria. Durante la ejecución, mantiene un valor para reemplazar otros valores, una vez que se completa la ejecución deseada, su valor se asigna a la segunda variable ya existente. Una vez que el alcance de las variables es tres variables, se liberan de la celda de memoria. Esta variable se denomina variable temporal o, a veces, se denomina catalizador, ya que la participación en la salida ni siquiera se rastrea, pero las ejecuciones se detendrán para producir el resultado deseado antes visto.
Java
// Java Program to Swap Two values using third variable // using temp variable // Importing generic libraries import java.util.*; class GFG { // Function to swap two numbers // Using temporary variable static void swapValuesUsingThirdVariable(int m, int n) { // Swapping the values int temp = m; m = n; n = temp; System.out.println("Value of m is " + m + " and Value of n is " + n); } // Main driver code public static void main(String[] args) { // Random integer values int m = 9, n = 5; // Calling above function to // reverse the numbers swapValuesUsingThirdVariable(m, n); } }
Value of m is 5 and Value of n is 9
Enfoque 2: intercambiar los valores sin usar la tercera variable mediante el uso de conceptos matemáticos de suma y diferencia.
Algoritmos : hay 3 pasos estándar que se enumeran a continuación:
- La diferencia del segundo número con respecto al primero se almacena en la celda de memoria donde ya se almacenó el primer número.
- La suma de ambos números se almacena en la segunda celda de memoria (número).
- La diferencia entre el primer número y el segundo se calcula y almacena en la celda de memoria donde se almacenó el primer valor inicial.
A continuación se muestra la implementación del intercambio de números sin crear ningún espacio auxiliar en la memoria:
Java
// Java Program to swap the two values // without using third variable // Importing generic Java libraries import java.util.*; class GFG { // Function to swap values of two numbers // without creating temp variable static void swapValuesWithoutUsingThirdVariable(int m, int n) { // Steps as listed in algorithm // Difference of 2nd from 1st // is stored in first variable m = m - n; // Sum is stored in second variable n = m + n; // Difference of 1st from 2nd // is replaced in first variable m = n - m; // Print numbers System.out.println("Value of m is " + m + " and Value of n is " + n); } // Main driver method public static void main(String[] args) { // Random numbers of integer type int m = 9, n = 5; // Above function is called in main // to print swapped values of numbers swapValuesWithoutUsingThirdVariable(m, n); } }
Value of m is 5 and Value of n is 9
Enfoque 3: Intercambio de valores usando el operador
Los operadores bit a bit se utilizan para realizar la manipulación de bits individuales de un número. Se pueden utilizar con cualquiera de los tipos integrales (char, short, int, etc). Se utilizan al realizar operaciones de actualización y consulta del árbol indexado binario.
Este operador es un operador binario, denotado por ‘^’. Devuelve bit a bit XOR de los valores de entrada, es decir, si los bits correspondientes son diferentes, da 1, de lo contrario da 0.
Ilustración:
a = 5 = 0101 (In Binary) b = 7 = 0111 (In Binary) Bitwise XOR Operation of 5 and 7 0101 ^ 0111 ________ 0010 = 2 (In decimal)
Este es el método más óptimo ya que aquí los cálculos se realizan directamente sobre bits en lugar de bytes, como se ve en los dos métodos anteriores. Aquí hay un programa Java para mostrar el funcionamiento interno:
Java
// Java Program to swap the two values // using XOR Operator // Importing generic Java libraries import java.io.*; class GFG { // Function to swap values of two numbers // using XOR operator static void swapValuesUsingXOROperator(int m, int n) { // Logic of XOR operator m = m ^ n; n = m ^ n; m = m ^ n; System.out.println("Value of m is " + m + " and Value of n is " + n); } // Main driver method public static void main(String[] args) { // Random two integer numbers // to get swapped int m = 9, n = 5; // Calling the function in main method // to get above integer numbers swapped swapValuesUsingXOROperator(m, n); } }
Value of m is 5 and Value of n is 9
Publicación traducida automáticamente
Artículo escrito por lavishgarg26 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA