为什么这个代码将正整数排列输出时,最后一个数会错误?

img

用的vs2022,按理来说用位运算将大数输出后赋为了0,这样后面的数就避开了这个数的干扰继续排序,但是在执行的时候最后一个数却会重复第二大的数并发生错误,求解惑。

for (i = 0; i < 9; i++)
for (j = 0; j < 9 - i; j++)
{
if (a[j] > a[j + 1])
{
a[j] = a[j] ^ a[j+1];
a[j+1] = a[j] ^ a[j+1];
a[j] = a[j] ^ a[j+1];
}
}

供参考:

img

把 a[j] = 0 去掉

不知道你这个问题是否已经解决, 如果还没有解决的话:

如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^