冒泡排序中,数组打印异常:为什么在元素交换前后打印数组时,结果不一致?

冒泡排序中,数组打印异常:为什么在元素交换前后打印数组时,结果不一致?

冒泡排序中,数组打印异常

在尝试编写冒泡排序算法时,发现了一个奇怪的现象。在元素交换前和交换后打印数组时,数组结构出现了不同。

具体代码如下:

// 元素交换位置前打印function bubbleSort(array) {    for (let i = 0; i < array.length - 1; i++) {        for (let j = i + 1; j < array.length; j++) {            if (array[j] < array[i]) {                const oldArr = JSON.parse(JSON.stringify(array));                console.log(oldArr);                // [1, 3, 6, 3, 23, 1, 34]                // [1, 1, 6, 3, 23, 3, 34]                // [1, 1, 3, 6, 23, 3, 34]                // [1, 1, 3, 3, 23, 6, 34]                [array[i], array[j]] = [array[j], array[i]];            }        }    }}// 元素交换位置后打印function bubbleSort(array) {    for (let i = 0; i < array.length - 1; i++) {        for (let j = i + 1; j < array.length; j++) {            if (array[j] < array[i]) {                const oldArr = JSON.parse(JSON.stringify(array));                [array[i], array[j]] = [array[j], array[i]];                console.log(oldArr);            }        }    }}

登录后复制

在元素交换前打印时,打印出交换前的数组;而在元素交换后打印时,却打印出交换后的数组。

原因:

出现这种现象的原因是,在使用解构赋值 [] 调换元素位置时,会产生一个返回值。在未用分号 ; 隔开的情况下,这个返回值被赋值给了 oldArr。

因此,在元素交换前打印时,oldArr 存储的是交换前的数组,而在元素交换后打印时,oldArr 存储的是交换后的数组,导致了两次打印出现不同的结果。

解决方法:

可以通过在解构赋值后加上分号,将返回值与赋值语句分开,从而避免此问题。

以上就是冒泡排序中,数组打印异常:为什么在元素交换前后打印数组时,结果不一致?的详细内容,更多请关注【创想鸟】其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至253000106@qq.com举报,一经查实,本站将立刻删除。

发布者:PHP中文网,转转请注明出处:https://www.chuangxiangniao.com/p/2805092.html

(0)
上一篇 2025年3月8日 22:02:24
下一篇 2025年3月5日 18:49:34

AD推荐 黄金广告位招租... 更多推荐

相关推荐

发表回复

登录后才能评论