【问题标题】:A customized swap fails in bubbleSort自定义交换在冒泡排序中失败
【发布时间】:2021-05-21 01:23:44
【问题描述】:

我为bubbleSort写了这样一个交换函数:

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 中,数字不是指针,您只更改 in 函数参数,没有其他内容。是的,ab 的值会切换,但只会在该函数内部,没有别的你想要的会切换

标签: javascript bubble-sort


【解决方案1】:

swap 函数使用数字而不是指针的副本。欢迎使用 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))

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-07-14
    • 1970-01-01
    • 1970-01-01
    • 2012-07-05
    • 1970-01-01
    • 1970-01-01
    • 2018-10-01
    相关资源
    最近更新 更多