冒泡排序最后两个总是重复,看了半天也没找到问题在哪。

img

img

img

img


冒泡排序最后两个总是重复,看了半天也没找到问题在哪。
初学者不太懂,还请帮忙看看问题出在哪,我是照着视频上一个一个敲的,格式应该没问题。

在交换数值的时候发生错误了,你这种交换方式你可以用笔写一写,你会发现9 这个值被第二个语句覆盖了
正确:

int num=arr[j];
arr[j]=arr[j+1];
arr[j+1]=num;

望采纳

将里面的条件语句改成如下即可:


if (arr[j]>arr[j+1]){
    int num=arr[j];
    arr[j]=arr[j+1];
    arr[j+1]=num;

交换数值的时候,如果arr[j] = 10,arr[j+1] = 9;你可以算一下,会发现你交换的过程中,把arr[j]赋值为10,arr[j+1]也赋值为10了,