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.