只过了第一个点,问题出在冒泡排序,但是错哪了??

P5740 【深基7.例9】最厉害的学生

```cpp for (int i = 0; i + 1 < n; i++) { if (stu[i].sum < stu[i + 1].sum) { struct student stu1= stu[i]; stu[i] = stu[i + 1]; stu[i + 1] = stu1; } } ``` 改成这样?
by linzhaoyumc @ 2021-08-22 12:01:15


如果按你的写法,`i+1` 会越界
by linzhaoyumc @ 2021-08-22 12:02:31


@[银河AI](/user/209808) 这只是找最大值,冒泡排序就是把最大值移到一边
by linzhaoyumc @ 2021-08-22 12:03:25


@[linzhaoyumc](/user/186541) 草我sb不好意思
by 银河AI @ 2021-08-22 12:04:00


@[linzhaoyumc](/user/186541) 这个我想过,不过前面定义时是1010,题目n<=1000,n+1最大也就1001,怎么会越界呢?
by Aheaddd @ 2021-08-22 12:06:06


冒泡排序一层循环我大受震撼
by 听取MLE声一片 @ 2021-08-22 12:07:00


@[Aheaddd](/user/549907) 说错了,是i+1怎么会越界
by Aheaddd @ 2021-08-22 12:07:11


@[听取MLE声一片](/user/253738) wocwoc???我脑子有病(:
by Aheaddd @ 2021-08-22 12:08:19


@[Aheaddd](/user/549907) 我悟了。。。 `for` 从 $n-2$ 开始,循环到 $0$ 这样才是把最大值移到前面。其他的不用变。
by linzhaoyumc @ 2021-08-22 12:11:20


@[听取MLE声一片](/user/253738) 这明明是用冒泡的思路求最大值。。。
by linzhaoyumc @ 2021-08-22 12:12:06


| 下一页