Programa Java para intercambiar dos números – Part 1

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.

  1. Creación de una celda de memoria auxiliar en la memoria.
  2. Sin crear ninguna celda de memoria auxiliar (adicional)
  3. 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);
    }
}
Producció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: 

  1. 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.
  2. La suma de ambos números se almacena en la segunda celda de memoria (número).
  3. 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);
    }
}
Producció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);
    }
}
Producció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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *