Javascript 中的冒泡排序算法
Bubble Sort Algorithm in Javascript
我这里有这个冒泡排序算法
let bubbleSort = (array) => {
for (let j=0;j<array.length;j++) {
for (let i=0;i<array.length;i++) {
if(array[i] > array[i+1]) {
let temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}
}
}
return array;
}
我明白它是如何工作的,但我不明白 if 语句的含义:
let temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
编辑:
我无法将所有答案标记为已解决,但它们对我有所帮助。谢谢!
这三行交换 i
和 i+1
索引的元素。
你可以不只写
array[i] = array[i+1];
array[i+1] = array[i];
交换元素,因为在这个版本中,执行第一行后,array[i]
的原始值丢失,因为它已被值 array[i+1]
.[=18= 覆盖]
要解决此问题,可以将值 array[i]
存储在一个临时变量中(此处称为 temp
),以便稍后可以将其分配给 array[i+1]
.
它是交换数组中当前元素和下一个元素的值。
类似这样的问题
1. array[i] = array[i+1];
2. array[i+1] = array[i]
是在第一个赋值中你用array[i+1]覆盖了array[i]的常规值,这样你就可以在第二行赋给array[i+1]相同的值,因此你使用 temp 变量存储 array[i] 的原始值,以便在第 1
行赋值后具有此值
1 let temp = array[i];
2 array[i] = array[i+1];
3 array[i+1] = temp;
在第一行中,您基本上将数组 [i] 的原始值存储到稍后重新分配数组 [i+1] 时用它
如果要在数组中的某个位置放置新值,该位置的旧值将被覆盖。
const arr = [0, 1, 3, 2]
我们将以此数组为例。如果我想交换 arr[2]
和 arr[3]
的值,我可以从设置 arr[2] = arr[3]
开始,结果如下。您会注意到值 3
现在丢失了!
const arr = [0, 1, 2, 2]
这就是您创建 temp
变量的原因。临时存储将被覆盖的值。这是索引 2 的示例:
// array = [0, 1, 3, 2]
let temp = array[2];
// temp = 3
// array = [0, 1, 3, 2]
array[2] = array[2+1];
// temp = 3
// array = [0, 1, 2, 2]
array[2+1] = temp;
// array = [0, 1, 2, 3]
我这里有这个冒泡排序算法
let bubbleSort = (array) => {
for (let j=0;j<array.length;j++) {
for (let i=0;i<array.length;i++) {
if(array[i] > array[i+1]) {
let temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
}
}
}
return array;
}
我明白它是如何工作的,但我不明白 if 语句的含义:
let temp = array[i];
array[i] = array[i+1];
array[i+1] = temp;
编辑: 我无法将所有答案标记为已解决,但它们对我有所帮助。谢谢!
这三行交换 i
和 i+1
索引的元素。
你可以不只写
array[i] = array[i+1];
array[i+1] = array[i];
交换元素,因为在这个版本中,执行第一行后,array[i]
的原始值丢失,因为它已被值 array[i+1]
.[=18= 覆盖]
要解决此问题,可以将值 array[i]
存储在一个临时变量中(此处称为 temp
),以便稍后可以将其分配给 array[i+1]
.
它是交换数组中当前元素和下一个元素的值。
类似这样的问题
1. array[i] = array[i+1];
2. array[i+1] = array[i]
是在第一个赋值中你用array[i+1]覆盖了array[i]的常规值,这样你就可以在第二行赋给array[i+1]相同的值,因此你使用 temp 变量存储 array[i] 的原始值,以便在第 1
行赋值后具有此值 1 let temp = array[i];
2 array[i] = array[i+1];
3 array[i+1] = temp;
在第一行中,您基本上将数组 [i] 的原始值存储到稍后重新分配数组 [i+1] 时用它
如果要在数组中的某个位置放置新值,该位置的旧值将被覆盖。
const arr = [0, 1, 3, 2]
我们将以此数组为例。如果我想交换 arr[2]
和 arr[3]
的值,我可以从设置 arr[2] = arr[3]
开始,结果如下。您会注意到值 3
现在丢失了!
const arr = [0, 1, 2, 2]
这就是您创建 temp
变量的原因。临时存储将被覆盖的值。这是索引 2 的示例:
// array = [0, 1, 3, 2]
let temp = array[2];
// temp = 3
// array = [0, 1, 3, 2]
array[2] = array[2+1];
// temp = 3
// array = [0, 1, 2, 2]
array[2+1] = temp;
// array = [0, 1, 2, 3]