日期:2014-05-20  浏览次数:20798 次

看了半天也没发现这两个算法哪边不一样,大家帮忙看看啊~~~
下面的排序方法按照注释的几句改一下,为什么就不能运行正确地结果?大家帮忙看一下啊!!!先谢谢了
比如排序:1,7,5,6,10
按照注释的修改,得出的结果为:1,7,7,7,10
搞不懂有什么不一样,不就把变量替换了一下吗?
public   void   Sort(int   []   list)  
      {  
      for(int   i=1;i <list.Length;++i)  
      {  
      int   t=list[i];   //把这句去掉
      int   j=i;  
      while((j> 0)&&(list[j-1]> t))//改成while((j> 0)&&(list[j-1]> list[i]))
      {  
      list[j]=list[j-1];  
      --j;  
      }  
      list[j]=t;   //改成list[j]=list[i];  
      }  
}

------解决方案--------------------
当 list[j-1]> list[i] 时
list[j]=list[j-1]; 这个时候list[j]的值已经改变,又由于j=i所以实际上list[i]已经不等于t了,而后list[j]=list[i](这里就相当于list[j]=list[j-1],与想要的已经不一样了)