java初学者小问题
一个错排问题
public void perm(String []buf,int start,int end){ //对n个篮球进行全排列,进行递归求解
// buf为全排列数组
if(start==end){ //只有一个球进行全排列时,则不需要再递归
if(check(buf)){ //检查是否符合要求,如果符合要求,则输出
for(int i=0;i<buf.length;i++){
System.out.print(basckets[i]+"("+buf[i]+") ");
}
System.out.println();
}
}
else{
for(int i=start;i<=end;i++){
String temp=buf[i]; //交换i与start元素的值
buf[i]=buf[start];
buf[start]=temp;
perm(buf,start+1,end); //递归求解球的全排列
temp=buf[i]; //还原i与start元素的值
buf[i]=buf[start];
buf[start]=temp;
}
}
}
谁能够解释一下这个函数 我没看懂
------解决方案--------------------
对一个数组进行排序计算机不能像人那样有逻辑的直接判断所有元素的大小,所以他会用循环将数组里面的元素两两比较,然后按照你的要求,比如说大的放后面,那么他就会看着两个元素哪个大些,后面的大些就不管,前面的大些就将他们交换位置,这样循环一边就可以比较出一个最大值,然后将这个循环放入另外一个循环里面嵌套,就可以进行多次循环从而达到排序的目的,这个就是冒泡排序了。
他这个里面的交换就是用来做这个的,他用的是新建一个缓冲变量的方式,先将一个变量赋给缓冲变量,然后用另外一个变量将前一个变量覆盖,然后用缓冲变量将后一个变量覆盖的方式进行的交换。