热门

最新

红包

立Flag

投票

同城

我的

发布
weixin_43553153
pcdd
1 年前
trueweixin_43553153

自己调试代码就很清晰了,图2打印的arr[i]相当于程序执行过程中的中间产物,这个值无意义
图1打印的arr[i]由i决定,此处i是不可能重复的,而数组中的每个元素也是唯一的,那么取值自然不会重复
图2打印的arr[i]由num决定,num是一个(伪)随机数,这也是为什么会出现重复的主要原因
举例说明,下面这种情况能使图2的arr[i]打印连续3次相同的值

i = 4
swap前,arr = 9 5 4 1 2 6 7 8 3
num= 2
swap后,arr = 9 5 2 1 4 6 7 8 3
打印 arr[i] = 4

i = 5
swap前,arr = 9 5 2 1 4 6 7 8 3
num= 4
swap后,arr = 9 5 2 1 6 4 7 8 3
打印 arr[i] = 4

i = 6
swap前,arr = 9 5 2 1 6 4 7 8 3
num= 5
swap后,arr = 9 5 2 1 6 7 4 8 3
打印 arr[i] = 4

因此按照图2的写法,打印arr[i]全部相同的情况也是有的
图1才是查看最终结果的正确写法。初学者最好不要纠结这类问题,只需要知道怎样写是正确的就可以了

@qq_71295824:为什么一个写在for循环里面,输出的语句就有重复的?第二种写法就没有重复的?

…全文
CSDN App 扫码分享
分享
评论
点赞
打赏
  • 复制链接
  • 举报
下一条:
麻烦问一下各位大佬为什么这个程序不进入第三个判断呢
立即登录