自定义交换在 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))