How to swap two numbers without using temp or third variable is common
interview question not just on Java interviews but also on C and C++
interviews. It is also a good programming questions for freshers.
This question was asked to me long back and didn't had any idea about how to
approach this question without using temp or third variable, may be lack of knowledge
on bitwise operators in Java or may be it didn't click at that time. Given some
time and trial error, I eventually come out with a solution with just
arithmetic operator but interviewer was keep asking about other approaches of swapping two variables without using temp or
third variable. Personally, I liked this question and included in list of
my programming interview question
because of its simplicity and some logical work, it force you to do. When
learned bit-wise operation in Java I eventually find another way of swapping two
variables without third variable, which I am going to share with you guys.
Swapping two numbers without using temp variable in Java
If you have ever heard this question, then you must be familiar with this
approach of swapping numbers without using temp variable. If you are hearing it
first time, then try it yourself, its a good programming exercise for
absolute first timer. By the way, here is the code example of swapping two
numbers without using temp variable and using arithmetic operator in Java:
int a = 10;
int b = 20;
System.out.println("value of a and b before swapping, a: " + a +" b: " + b);
//swapping value of two numbers without using temp variable
a = a+ b; //now a is 30 and b is 20
b = a -b; //now a is 30 but b is 10 (original value of a)
a = a -b; //now a is 20 and b is 10, numbers are swapped
System.out.println("value of a and b after swapping, a: " + a +" b: " + b);
Output:
value of a and b before swapping, a: 10 b: 20
value of a and b after swapping, a: 20 b: 10
Swapping two numbers without using temp
variable in Java with bitwise operator
Bitwise operators can also be used to swap two numbers without using
third variable. XOR bitwise operator returns zero if both operand is same i.e.
either 0 or 1 and returns 1 if both
operands are different e.g. one operand is zero and other is one. By leveraging this property, we can swap two numbers in Java. Here is code
example of swapping two numbers without using temp variable in Java using XOR
bitwise operand:
A B A^B (A XOR B)
0 0 0 (zero because operands are same)
0 1 1
1 0 1 (one because operands are different)
1 1 0
int a = 2; //0010 in binary
int b = 4; //0100 in binary
System.out.println("value of a and b before swapping, a: " + a +" b: " + b);
//swapping value of two numbers without using temp variable and
XOR bitwise operator
a = a^b; //now a is 6 and b is 4
b = a^b; //now a is 6 but b is 2 (original value of a)
a = a^b; //now a is 4 and b is 2, numbers are swapped
System.out.println("value of a and b after swapping using XOR bitwise operation, a: " + a +" b: " + b);
value of a and b before swapping, a: 2 b: 4
value of a and b after swapping using XOR bitwise
operation, a: 4 b: 2
Swapping two numbers without using temp
variable in Java with division and multiplication
There is another, third way of swapping two numbers without using third
variable, which involves multiplication and division operator. This is similar
to first approach, where we have used + and - operator for swapping values of
two numbers. Here is the code example to swap tow number without using third
variable with division and multiplication operators in Java :
int a = 6;
int b = 3;
System.out.println("value of a and b before swapping, a: " + a +" b: " + b);
//swapping value of two numbers without using temp variable using
multiplication and division
a = a*b; //now a is 18 and b is 3
b = a/b; //now a is 18 but b is 6 (original value of a)
a = a/b; //now a is 3 and b is 6, numbers are swapped
System.out.println("value of a and b after swapping using multiplication and division,
a: " + a +" b: " + b);
Output:
value of a and b before swapping, a: 6 b: 3
value of a and b after swapping using multiplication and division,
a: 3 b: 6
That's all on 3 ways to swap two variables without using third
variable in Java. Its good to know multiple ways of swapping two variables
without using temp or third variable to handle any follow-up question. Swapping
numbers using bitwise operator is the fastest among three, because it involves
bitwise operation. It’s also great way to show your knowledge of bitwise
operator in Java and impress interviewer, which then may ask some question on
bitwise operation. A nice trick to drive interview on your expert area.
Tidak ada komentar:
Posting Komentar