实际上要寻找下一个顺序,应该从低位开始修改....从低位开始找到首个nums[i]>nums[i-1],那么i-1位应该调整为i到len-1中大于i-1的最小数字,之后i到len-1的数字应该按照由低到高排列....当找不到这样的位的时候说明这个数字已经是最大的了,返回其最小的就可以
public class Solution {
public void nextPermutation(int[] nums) {
int len=nums.length;
int i;
for( i=len-1;i>0;i-- )
{
if( nums[i]>nums[i-1] )
{
int j=i;
while( j<len )
{
if( nums[j]<=nums[i-1] )
{
break;
}
j++;
}
int tmp=nums[i-1];
nums[i-1]=nums[j-1];
nums[j-1]=tmp;
Arrays.sort(nums,i,len);
break;
}
}
if( i==0 )
{
Arrays.sort(nums);
}
}
}