sudhirrajput89
BAN USERpackage com.test.util;
public class NextHigherNumber {
static int numArr[];
public static void main(String[] arg)
{
int n=123456789;
int num=n;
int numLen=0;
while(n!=0)
{
n=n/10;
numLen++;
}
numArr=new int[numLen];
n=num;
for(int i=numLen-1;i>=0;i--)
{
numArr[i]=n%10;
n=n/10;
}
for(int i : numArr)
System.out.println("i : "+i);
outer : for(int i=numLen-2;i>=0;i--)
{
inner : for(int j=i+1;j<numLen;j++)
{
if(numArr[i]>=numArr[j])
{
System.out.println("1st cond>>>>>i : "+i+" j : "+j+" numArr[i]="+numArr[i]+" numArr[j]="+numArr[j]);
continue inner;
}
else
{
System.out.println("2nd cond>>>>>i : "+i+" j : "+j+" numArr[i]="+numArr[i]+" numArr[j]="+numArr[j]);
int temp=numArr[numLen-1];
numArr[numLen-1]=numArr[i];
numArr[i]=temp;
System.out.println("Swapping>>>>>i : "+i+" numLen-1 : "+(numLen-1)+" numArr[i]="+numArr[i]+" numArr[numLen-1]="+numArr[numLen-1]);
sort(i+1,numLen-1);
break outer;
}
}
}
int newNum=0;
for(int i=numLen-1;i>=0;i--)
{
newNum=newNum+(int) (Math.pow(10, i)*numArr[numLen-1-i]);
}
System.out.println("New Number : "+newNum);
}
public static void sort(int frmIndex,int toIndex)
{
for(int i=frmIndex;i<=toIndex;i++)
System.out.println(i+" Before : "+numArr[i]);
for(int i=frmIndex;i<=toIndex;i++)
{
for(int j=i+1;j<=toIndex;j++)
{
if(numArr[i]>numArr[j])
{
int temp=numArr[i];
numArr[i]=numArr[j];
numArr[j]=temp;
}
}
}
for(int i=0;i<=toIndex;i++)
System.out.println(i+" After : "+numArr[i]);
}
}
- sudhirrajput89 May 01, 2014