永发信息网

冒泡排序第二个for循环为何:a.length-i-1 ?

答案:4  悬赏:0  手机版
解决时间 2021-04-05 10:58
  • 提问者网友:谁的错
  • 2021-04-04 22:43
冒泡排序第二个for循环为何:a.length-i-1 ?
最佳答案
  • 五星知识达人网友:像个废品
  • 2021-04-04 22:48
你的程序里面不是有一句 if (a[j] > a[j + 1]),如果j=a.length的话,就会变成a[a.length]>a[a.length+1],这样的话数组就越界了,明白了吗?
全部回答
  • 1楼网友:一袍清酒付
  • 2021-04-05 01:08
第一次i=0的时候,第二层循环依次比较j与j+1的大小,此次循环会把整个数组的最小值交换到最末尾的位置(假设排序是从大到小),当i=1时,此次循环会把整个数组第二个小的数交换到末尾位置(每次循环前面的数据都会有一定的改变,大数逐渐前移),以此类推。所以第二层循环比较到a.length是没有意义的,故通过j
  • 2楼网友:不如潦草
  • 2021-04-04 23:52
减少循环次数
  • 3楼网友:杯酒困英雄
  • 2021-04-04 23:28
你别把自己绕进去了
int a[]={6,5,4,1,2,3};
for (int i = 0; i < a.length; i++) {
for (int j = 0; j < a.length; j++) {
int temp;
if (a[i] < a[j]) {
temp = a[j];
a[j] = a[i];
a[i] = temp;
}
}
}
我要举报
如以上回答内容为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
点此我要举报以上问答信息
大家都在看
推荐资讯