package com.interview.array;
/**
* http://www.geeksforgeeks.org/rearrange-positive-and-negative-numbers-publish/
*/
public class PositiveAndNegativeNumberAlternatively {
public void arrange(int arr[]){
int startOfPos = segregate(arr);
int startOfNeg = 1;
while(startOfNeg < startOfPos && startOfPos < arr.length){
swap(arr,startOfNeg,startOfPos);
startOfNeg+=2;
startOfPos++;
}
}
private int segregate(int arr[]){
int low =0;
int high = arr.length-1;
while(low < high){
if(arr[low] < 0){
low++;
}else if(arr[high] >= 0){
high--;
}else{
swap(arr,low,high);
}
}
return low;
}
private void swap(int arr[],int i,int j){
int t = arr[i];
arr[i] = arr[j];
arr[j] = t;
}
public static void main(String args[]){
int arr[] = {-1,-2,-3,-4,-5,1,2,3,4,5};
PositiveAndNegativeNumberAlternatively pan = new PositiveAndNegativeNumberAlternatively();
pan.arrange(arr);
for(int i=0; i < arr.length; i++){
System.out.print(arr[i]+ " ");
}
}
}