import java.util.*;
public class qpl
{
public static void main( String[] args)
{
char [] arry=new char []{'a','b','c','d'};
int n=4;
   int  k=0;
 px PX=new px();
PX.paixu(arry,n,k);

}
}class px
{
void paixu(char []arry,int n,int k)
{
if (n==k)
{for(int i=0;i<=3;i++)
System.out.print(arry[i]);
System.out.println("     ");
}

else 
{

for (int i=k;i<=n;i++)
{swap (arry[k],arry[i]);
paixu(arry,n,k+1);
swap (arry[i],arry[k]);
}
}
}
 void swap(char a,char b)
 {  
 //System.out.print("=="+a);
  char temp=a;
  a=b;
  b=temp;
  //System.out.print("++"+b);
 }
 }
那里写的不对呢? 我怎么都调不通(我是java初学者 :)    )
还有csdn的分有什么用啊

解决方案 »

  1.   

    调不通,是因为n=4。数组的index从0开始,让n=3或n=arry.length。
    调通后,你的代码也不是你想要的。paixu? 总要比较一下大小吧。csdn的分是吸引我回答你的问题的原因。
      

  2.   

    swap方法无效,达不到你希望的交换,这个不同c里面加个地址就解决了
    详细的可以搜索论坛上前面的帖子另外,你的命名命名很有问题,类名小写,对象名大写,真少见
      

  3.   

    to yqj2065(严千钧):谢谢你的回答,不过全排列为什么要比大小呢?还请赐教。
    to believefym(暮色,miss,迷失,miss):感谢你的回答,经过你的指点,我已经修改成功了。命名问题确实很不规范,让xd见笑了。
    贴出修改的swap,希望对像我一样菜的xd也有所帮助:)
     void swap(char []a,int x,int y)
     {  
     char temp=a[x];
     a[x]=a[y];
     a[y]=temp;
     }还有就是怎么给分呢:(
      

  4.   

    点击管理还有,如果你不是练习java的排序算法,api就已经提供相关的排序了
    你这个只需要Arrays.sort(arry),默认是升序