首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > .NET > C# >

看了半晌也没发现这两个算法哪边不一样,大家帮忙看看啊~~~

2011-12-22 
看了半天也没发现这两个算法哪边不一样,大家帮忙看看啊~~~下面的排序方法按照注释的几句改一下,为什么就不

看了半天也没发现这两个算法哪边不一样,大家帮忙看看啊~~~
下面的排序方法按照注释的几句改一下,为什么就不能运行正确地结果?大家帮忙看一下啊!!!先谢谢了
比如排序: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],与想要的已经不一样了)

热点排行