R Examples

R - Swap two numbers without using Temporary Variable



The value of two variables can be swapped without using any temporary variables. The method involves using operators like +, *, / and bitwise.

Method 1: Using + operator

In the example below, the + operator is used to swap the value of two variables x and y.

swap <- function(x, y) {
  cat("Before Swap:\n")
  cat("x =", x, "\n")
  cat("y =", y, "\n")

  #Swap technique
  x <- x + y
  y <- x - y
  x <- x - y

  cat("After Swap:\n")
  cat("x =", x, "\n")
  cat("y =", y, "\n") 
}

swap(10, 25)

The above code will give the following output:

Before Swap:
x =  10 
y =  25 
After Swap:
x =  25 
y =  10 

Method 2: Using * operator

Like + operator, the * operator can also be used to swap the value of two variables x and y.

swap <- function(x, y) {
  cat("Before Swap:\n")
  cat("x =", x, "\n")
  cat("y =", y, "\n")

  #Swap technique
  x <- x * y
  y <- x / y
  x <- x / y

  cat("After Swap:\n")
  cat("x =", x, "\n")
  cat("y =", y, "\n") 
}

swap(10, 25)

The above code will give the following output:

Before Swap:
x = 10 
y =  25 
After Swap:
x = 25 
y = 10 

Method 3: Using / operator

Similarly / operator can also be used to swap the value of two variables x and y.

swap <- function(x, y) {
  cat("Before Swap:\n")
  cat("x =", x, "\n")
  cat("y =", y, "\n")

  #Swap technique
  x <- x / y
  y <- x * y
  x <- y / x

  cat("After Swap:\n")
  cat("x =", x, "\n")
  cat("y =", y, "\n") 
}

swap(10, 25)

The above code will give the following output:

Before Swap:
x = 10 
y = 25 
After Swap:
x = 25 
y = 10 

Disadvantages of using above methods

  • The multiplication and division based approaches fail if the value of one of the variable is 0.
  • The addition based approach may fail due to arithmetic overflow. If x and y are too large, operation performed on operands may result into out of range integer.