今天学习选择排序,然后写的和书上一样,就是排序出现问题

今天学习选择排序,然后写的和书上一样,就是排序出现问题

问题描述:

如图所示,感觉貌似遇到了历史性问题,因为连Arrays类的toString()方法都排不好,然后就5c全部奉献了。图片

错误原因:第二次交换错了,29与27第一次交换的时候,i=2,index=3,交换,但是在第二个for循环执行第二次判断的时候,第二个if条件满足!27又换回了29,原因就在于index的初始化是在第一个for里。
参考:for(int i=1;i<score.length;i++){
for(int j=0;j<score.length;j++){
if(score[i]<score[j]){
int x=score[i];
score[i]=score[j];
score[j]=x;

                }
            }
        }

if(index!=i)这个判断条件错了,因为第一次交换之后,这个条件便恒成立了。

toString() 作用只是输出字符串而已 ,要排序 ,用sort 函数 ,你这个逻辑也错了

我想用选择排序解决这问题!!!

感觉逻辑上没有任何问题啊,而且我电脑的选择排序也基本是这样的,可以正常运行。楼主你可以设置一下断点,或者每次外层for都输出一下Arrays.toString,看看到底哪里出了问题。图片说明

我又试了下图片上去了 可是感觉和冒泡排序似的 有点迷惑 求指点