冒泡排序中,数组打印异常:为什么在元素交换前后打印数组时,结果不一致?
时间:2024-11-11 19:51:52 269浏览 收藏
哈喽!今天心血来潮给大家带来了《冒泡排序中,数组打印异常:为什么在元素交换前后打印数组时,结果不一致? 》,想必大家应该对文章都不陌生吧,那么阅读本文就都不会很困难,以下内容主要涉及到,若是你正在学习文章,千万别错过这篇文章~希望能帮助到你!

在冒泡排序中,数组打印异常
在尝试编写冒泡排序算法时,发现了一个奇怪的现象。在元素交换前和交换后打印数组时,数组结构出现了不同。
具体代码如下:
// 元素交换位置前打印
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 存储的是交换后的数组,导致了两次打印出现不同的结果。
解决方法:
可以通过在解构赋值后加上分号,将返回值与赋值语句分开,从而避免此问题。
文中关于的知识介绍,希望对你的学习有所帮助!若是受益匪浅,那就动动鼠标收藏这篇《冒泡排序中,数组打印异常:为什么在元素交换前后打印数组时,结果不一致? 》文章吧,也可关注golang学习网公众号了解相关技术文章。
相关阅读
更多>
-
502 收藏
-
501 收藏
-
501 收藏
-
501 收藏
-
501 收藏
最新阅读
更多>
-
350 收藏
-
462 收藏
-
235 收藏
-
309 收藏
-
135 收藏