Given an array A[], write a function that segregates even and odd numbers. The functions should put all even numbers first, and then odd numbers.
Example
Input = {12, 34, 45, 9, 8, 90, 3}
Output = {12, 34, 8, 90, 45, 9, 3}
In the output, order of numbers can be changed, i.e., in the above example 34 can come before 12 and 3 can come before 9.
Algorithm
segregateEvenOdd(int []array)
1) Initialize two index variables left and right:
left = 0, right = size -1
2) Increment left index until we see an odd number.
3) Decrement right index until we see an even number.
4) If left < right then swap arr[left] and arr[right].
Implementation
class SegregateEvenAndOddNumbers{
static void segregate(int []a){
if(a == null || a.length == 0)
return;
int left = 0, right = a.length - 1;
while(left < right){
while(a[left]%2 == 0 && left < right)
left++;
while(a[right]%2 != 0 && left < right)
right--;
if(left < right){
swap(a, left, right);
left++;
right--;
}
}
}
//Utility function to swap array elements
static void swap(int []a, int i, int j){
int t = a[i];
a[i] = a[j];
a[j] = t;
}
public static void main(String []ar){
int []a = {12, 34, 45, 9, 8, 90, 3};
segregate(a);
System.out.println("\nafter the shuffling" + java.util.Arrays.toString(a));
}
}
Example
Input = {12, 34, 45, 9, 8, 90, 3}
Output = {12, 34, 8, 90, 45, 9, 3}
In the output, order of numbers can be changed, i.e., in the above example 34 can come before 12 and 3 can come before 9.
Algorithm
segregateEvenOdd(int []array)
1) Initialize two index variables left and right:
left = 0, right = size -1
2) Increment left index until we see an odd number.
3) Decrement right index until we see an even number.
4) If left < right then swap arr[left] and arr[right].
Implementation
class SegregateEvenAndOddNumbers{
static void segregate(int []a){
if(a == null || a.length == 0)
return;
int left = 0, right = a.length - 1;
while(left < right){
while(a[left]%2 == 0 && left < right)
left++;
while(a[right]%2 != 0 && left < right)
right--;
if(left < right){
swap(a, left, right);
left++;
right--;
}
}
}
//Utility function to swap array elements
static void swap(int []a, int i, int j){
int t = a[i];
a[i] = a[j];
a[j] = t;
}
public static void main(String []ar){
int []a = {12, 34, 45, 9, 8, 90, 3};
segregate(a);
System.out.println("\nafter the shuffling" + java.util.Arrays.toString(a));
}
}
import java.util.ArrayList;
ReplyDeletepublic class Sample {
public static void main(String[] args) {
int[] input = {2,32,4235,4,5646,34,324,3,237,3245,324,324,2};
input = segregate(input);
for(int i: input){
System.out.println(i);
}
}
private static int[] segregate(int[] input) {
//
ArrayList odd = new ArrayList();
ArrayList even = new ArrayList();
for(int i: input){
if(i%2 == 0){
even.add(i);
}
else{
odd.add(i);
}
}
int count = 0;
for(Integer i: odd){
input[count] = i;
count++;
}
for(Integer i: even){
input[count] = i;
count++;
}
return input;
}
}
Time Complexity: O(N)