1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
| class Permutation{ boolean nextPermutation(int[] num){ if(num.length<=1)return false; int i=num.length-2; while(i>=0&&num[i]>=num[i+1])i--; if(i<0)return false; int j=num.length-1; while(j>i&&num[j]<=num[i])j--; swap(num,i,j); reverse(num,i+1,num.length-1); return true; } void swap(int[]num,int i,int j){ int temp=num[j]; num[j]=num[i]; num[i]=temp; } void reverse(int[]num,int s,int e){ while(s<e){ swap(num,s,e); s++; e--; } } }
|