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;
}
}
}
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);
}
}
我把你的稍微改造了一下!
命名有点不规范,将就着看吧!
它是个 排序问题。。不是比较大小。。。 辛苦啦~~~~谢了~
比如输入abc 然后输出 abc acb bca bac cba cab
@prison:
???必须按照你的规则来排序?
看不出来哪里排序了
比如输入abc 然后输出 abc acb bca bac cba cab 这是全排列问题 不是简单地比较大小那种排序
@prison: 就是输出一个数组能有多少种重组的字符嘛 要怎样讲解 你不是知道吗
递归调用么。。。,在循环中改变字符的顺序,然后输出。。。
我懂,但是请您仔细看看这个递归,他中间把排完序的字符又恢复了顺序 然后变换第一个的位置,重新排序 依次类推。我不知道其中的奥秘