abcd排序
2016-03-23 11:48
375 查看
package cn.heima;
public class StringPaile {
/**
* @param args
*/
public static void main(String[] args) {
String s="asd";
int len = s.length();
char[] sb = new char[len];
char[] cc =s.toCharArray();//把string转变为char数组
int[] index = new int[len];
long startTime = System.currentTimeMillis();//记录开始时间
mixThey(cc,sb,0,len,index);
long endTime = System.currentTimeMillis();//记录结束时间
System.out.println((endTime-startTime)/1000f +"秒");//求出运行用的时间
}
public static void mixThey(char[] cc,char[] sb,int i,int n,int[] index) {
if(i==n){//如果i=n表明已运行完输出某种排列
System.out.println(new String(sb));
return;//出栈
}else{
for(int j=0;j<n;j++){//第一个数有len种排列第二个有len-1种第三次有len-2依次类推
boolean flag =false;//设置一标记
for(int k=0;k<i;k++){//我用循环来看前面是否已存在
if(index[k]==j){//如果前面存在就停止查找把flag设为true
flag=true;
break;
}
}
if(flag) continue;//如果为true说明有就继续找
index[i]=j;//能运行到这里表明前面中没有
sb[i]=cc[j];//把它存入sb数组中
mixThey(cc,sb,i+1,n,index);//接着用递归来处理sb数组i+1位子的放什么
}
}
}
}
public class StringPaile {
/**
* @param args
*/
public static void main(String[] args) {
String s="asd";
int len = s.length();
char[] sb = new char[len];
char[] cc =s.toCharArray();//把string转变为char数组
int[] index = new int[len];
long startTime = System.currentTimeMillis();//记录开始时间
mixThey(cc,sb,0,len,index);
long endTime = System.currentTimeMillis();//记录结束时间
System.out.println((endTime-startTime)/1000f +"秒");//求出运行用的时间
}
public static void mixThey(char[] cc,char[] sb,int i,int n,int[] index) {
if(i==n){//如果i=n表明已运行完输出某种排列
System.out.println(new String(sb));
return;//出栈
}else{
for(int j=0;j<n;j++){//第一个数有len种排列第二个有len-1种第三次有len-2依次类推
boolean flag =false;//设置一标记
for(int k=0;k<i;k++){//我用循环来看前面是否已存在
if(index[k]==j){//如果前面存在就停止查找把flag设为true
flag=true;
break;
}
}
if(flag) continue;//如果为true说明有就继续找
index[i]=j;//能运行到这里表明前面中没有
sb[i]=cc[j];//把它存入sb数组中
mixThey(cc,sb,i+1,n,index);//接着用递归来处理sb数组i+1位子的放什么
}
}
}
}
相关文章推荐
- Genymotion不能运行的解决办法
- 加载gif图片的方法:(需要SDWebImage方法)
- vs2013出现error C4996问题
- #include与#import的区别,#import 与@class 的区别
- VS+VAssistX自动添加注释
- c sizeof
- Ubuntu下eclipse的Extjs提示插件安装
- [转载]android的消息处理机制(图+源码分析)——Looper,Handler,Message
- 第一个简单的flask框架
- alembicTool_assemblyInfo
- 多线程中join方法的使用方法以及其特点
- Apache基础教程
- HDU 1426 Sudoku Killer 枚举每一个空,深搜
- 使用GeneratorConfig自动生成Java类和XML文件
- Android开发实用工具汇总-持续更新
- Struts初始--环境搭建
- 求adc+de=ad+cde类似于这样问题
- 文章标题
- 团队问题
- 168.View the Exhibit and examine the description of SALES and PROMOTIONS tables.