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