首页 新闻 会员 周边

这是一个字符串全排序的算法 能讲一下这个方法的意思吗

0
[已解决问题] 解决于 2013-03-24 22:11

public static void confusion(char[] str,int i){

if (i >= str.length)
return;
if (i == str.length - 1) {
System.out.println(String.valueOf(str));
} else {
for (int j = i; j < str.length; j++) {
char temp = str[j];
str[j] = str[i];
str[i] = temp;

confusion(str, i + 1);

temp = str[j];
str[j] = str[i];
str[i] = temp;
}
}

}

prison的主页 prison | 菜鸟二级 | 园豆:298
提问于:2013-03-21 16:25
< >
分享
最佳答案
0

public static void confusion(char[] str){

char temp =0;

for (int i = 0; i < str.length; i++) {

for (int j = i; j < str.length; j++) {
int a = str[i];
int b = str[j];
if(str[i]>str[j]){
temp=str[j];
str[j]=str[i];
str[i]=temp;
}
}
String car="";
for (int k = 0; k < str.length; k++) {
car+=String.valueOf(str[k]);

}
System.out.println("car-----------"+car);
}
}

我把你的稍微改造了一下!

命名有点不规范,将就着看吧!

奖励园豆:5
Beyond-bit | 老鸟四级 |园豆:2885 | 2013-03-22 09:11

它是个 排序问题。。不是比较大小。。。 辛苦啦~~~~谢了~

比如输入abc  然后输出 abc acb bca bac cba cab 

prison | 园豆:298 (菜鸟二级) | 2013-03-22 09:13

@prison: 

???必须按照你的规则来排序?

Beyond-bit | 园豆:2885 (老鸟四级) | 2013-03-22 09:19
其他回答(2)
0

看不出来哪里排序了

JCdon | 园豆:2 (初学一级) | 2013-03-21 17:28

比如输入abc  然后输出 abc acb bca bac cba cab 这是全排列问题  不是简单地比较大小那种排序

支持(0) 反对(0) prison | 园豆:298 (菜鸟二级) | 2013-03-21 20:21

@prison: 就是输出一个数组能有多少种重组的字符嘛 要怎样讲解 你不是知道吗

支持(0) 反对(0) JCdon | 园豆:2 (初学一级) | 2013-03-22 09:27
-1

递归调用么。。。,在循环中改变字符的顺序,然后输出。。。

sinhbv | 园豆:2579 (老鸟四级) | 2013-03-21 22:52

我懂,但是请您仔细看看这个递归,他中间把排完序的字符又恢复了顺序  然后变换第一个的位置,重新排序  依次类推。我不知道其中的奥秘

支持(0) 反对(0) prison | 园豆:298 (菜鸟二级) | 2013-03-22 09:07
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册