刚开始学习java,做了个排序的练习可发现有这么一个问题,跪求解答。为什么把temp换成a[i]之后就不对了?代码如下
public static void main(String[] args) {
// TODO Auto-generated method stub
int  a[]={4,3,2,5,1};
  int temp=0;
  int j=0;
  for(int i=1;i<a.length;i++)
  {
  if(a[i]<a[i-1])
  { temp=a[i];

    for( j=i-1;j>=0&&a[j]>temp;j--)//这里比较的是temp而不是a[i]区别是有可为什么呢?
    
    {
     a[j+1]=a[j];
    }
  a[j+1]=temp;
  }
  }
  for(int i=0;i<a.length;i++)
  {
  System.out.println(a[i]);
  }
}

解决方案 »

  1.   

    插入排序吗?看了你的代码,好乱,temp没有交换数组值,改了下楼主的代码:public class Sorts {
    public static void main(String[] args) {
    // TODO Auto-generated method stub
    int a[]={4,3,2,5,1};
    int temp=0;
    for(int i=0;i<a.length;i++){
    for(int j=i;j>0&&(a[j]<a[j-1]);j--){
    temp=a[j];
    a[j]=a[j-1];
    a[j-1]=temp;
    }
    }
    for(int i:a){
    System.out.print(i+" ");
    }
    }
    }
    应该没问题了
      

  2.   

    楼主的想法有误,楼主只是把a[i]的值付给temp,如果把'temp换成a[i]之后'就会先把a[i-1]的值替换掉,