自定义交换在 bubbleSort 中失败
A customized swap fails in bubbleSort
我为bubbleSort写了这样一个swap函数:
function swap(a, b) {
tmp = a;
a = b;
b = tmp;
}
然后封装在bubbleSort中:
function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len; i++) {
for (let j = 0; j < len - 1; j++) {
// swap the elements
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]); // use swap here.
}
}
}
}
并测试它:
arr = [34, 87, 21, 0, -11];
bubbleSort(arr)
但是还是没变,有什么问题吗?
交换函数获取数字的副本而不是指针。欢迎使用 javascript?
无论哪种方式,您都需要数组和索引进行交换,因为对象是指针,数字不是
这是一个例子
//working swap function
function swap(arr, a, b){
var tmp=arr[a]
arr[a]=b
arr[b]=tmp
}
function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len; i++) {
for (let j = 0; j < len - 1; j++) {
// swap the elements
if (arr[j] > arr[j + 1]) {
swap(arr, j, j+1); // use swap here.
}
}
}
return arr //because why not
}
arr = [34, 87, 21, 0, -11];
console.log(bubbleSort(arr))
我为bubbleSort写了这样一个swap函数:
function swap(a, b) {
tmp = a;
a = b;
b = tmp;
}
然后封装在bubbleSort中:
function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len; i++) {
for (let j = 0; j < len - 1; j++) {
// swap the elements
if (arr[j] > arr[j + 1]) {
swap(arr[j], arr[j + 1]); // use swap here.
}
}
}
}
并测试它:
arr = [34, 87, 21, 0, -11];
bubbleSort(arr)
但是还是没变,有什么问题吗?
交换函数获取数字的副本而不是指针。欢迎使用 javascript?
无论哪种方式,您都需要数组和索引进行交换,因为对象是指针,数字不是
这是一个例子
//working swap function
function swap(arr, a, b){
var tmp=arr[a]
arr[a]=b
arr[b]=tmp
}
function bubbleSort(arr) {
let len = arr.length;
for (let i = 0; i < len; i++) {
for (let j = 0; j < len - 1; j++) {
// swap the elements
if (arr[j] > arr[j + 1]) {
swap(arr, j, j+1); // use swap here.
}
}
}
return arr //because why not
}
arr = [34, 87, 21, 0, -11];
console.log(bubbleSort(arr))