字典序全排列
2017-10-26 22:25
155 查看
/** * Created by lxw, liwei4939@126.com on 2017/10/26. * 1,从右端开始扫描,若出现前一个比后一个小,记录前一个的元素下表index *2,再找出index以后比该元素大的中的最小值的下标 minIndex *3,交换arr[index],arr[minIndex] *4,index以后的元素实现反转 * 结束条件:前一个都比后一个大 */ import java.util.Arrays; public class Dictionary_Sort { int getMin(char[]input,int index){ char min=input[index]; int minIndex=index+1; char result='z'; for(int i=index+1;i<input.length;i++){ if(input[i]>min&&input[i]<result){ result=input[i]; minIndex=i; } } return minIndex; } void exchange(char []input,int index,int minIndex){ char temp=input[index]; input[index]=input[minIndex]; input[minIndex]=temp; } void reverse(char input[],int first,int end) { while(first<end){ exchange(input,first,end); first++; end--; } } void getDictionary(char c[]){ System.out.println(new String(c)); int i=0; while(true){ i=c.length-1; for(;i>0;i--){ if(c[i-1]<c[i])break; //找到前一个比后一个小的元素,结束本层循环 } if(i==0)break; //结束外层循环的条件为前一个元素都比后一个大 int minIndex=getMin(c,i-1); exchange(c,i-1,minIndex); reverse(c,i,c.length-1); System.out.println(new String(c)); } } public static void main(String []args){ String input="adfec"; char [] c=input.toCharArray(); Arrays.sort(c); new Dictionary_Sort ().getDictionary(c); } }
相关文章推荐
- 输出字符串的所有全排列(递归法和非递归,非递归采用组合数学的字典序)
- 全排列与字典序排列
- 全排列(按字典序)
- 7.5 字典序全排列
- 全排列(1) ----字典序
- ACM常用模板 字典序全排列
- 算法练习 - 字符串的全排列(字典序排列)
- 字典序全排列
- 第k个字典序全排列
- 字典序全排列
- 生成字典序的全排列
- 全排列——字典序
- 第k个字典序全排列(kth permutation)
- 字典序全排列生成算法
- 7.2.1(按照字典序全排列)
- 字典序全排列输出下一个的java实现
- 全排列问题 以51nod1384为例(字典序且重复)
- 模拟之全排列的第k个字典序
- 第k个字典序全排列(kth permutation)- 康托排列
- 全排列(字典序)