您的位置:首页 > 其它

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位子的放什么

}

}

}

}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: