【问题标题】:same numbers, different input methods, different outputs相同的数字,不同的输入方式,不同的输出
【发布时间】:2019-10-16 14:03:09
【问题描述】:

在对数组进行冒泡排序时,它会根据输入方法给出不同的输出,手动排序正确,随机排序则不会。有任何想法吗?目标是将数字从低到高排序

我已经尝试过手动输入与随机输入相同的输入,但它仍然无法用于随机输入。

    valores =["20", "78", "48", "55", "4"] 

(两个函数的输入相同)

let valores = []

function randomVals() {
    let cantidad
    valores = []

    if (rCantidad.value != '') {
        cantidad = Number(rCantidad.value)
    } else {
        cantidad = 15
    }

    for (let k = 0; k < cantidad; k++) {
        valores.push(((Math.random()) * 100).toFixed(0))
    }
    console.log(valores)
}


function agregarValor() {

    let val = Number(valor.value)

    valores.push(val)

    console.log(valores)

}

function bubbleSort(){ 

for (let j=0; j<valores.length; j++){
for (let i=j+1; i<valores.length; i++){
    if (valores[j]>valores[i]){
        var temp=0
        temp=valores[i]
        valores[i]=valores[j]
        valores[j]=temp
        console.log(valores)
    }
}
}
 }

预期的排序输出:

     valores=[4, 20, 48, 55, 78]

使用时给出的排序输出

      randomVals() valores=["20", "4", "48", "55", "78"]

【问题讨论】:

  • 您能否进一步说明您想要实现的目标?
  • @ShayeUlman 我希望数字从低到高排列。
  • 你只是想对数组进行排序,或者你想弄清楚/自己实现排序函数(而不是使用内置的sort()函数)?
  • @ShayeUlman 我正在使用冒泡排序函数对数组进行排序,但只有当输入由 agregarValor() 给出时,它才会正确排序,如果它们是由 randomVals 给出的,它不会t 排序正确。
  • 请贴出所有代码,事情会变得更清楚:)

标签: javascript math random bubble-sort


【解决方案1】:

toFixed() 是一个格式化函数。它将返回一个表示给定数字的字符串。一旦您的数组中有字符串,您的排序函数将使用字符串比较来比较它们(其中“20”

确保数组包含数字,例如通过删除格式:

valores.push(((Math.random()) * 100))

如果您只想要整数,请使用Math.round()

【讨论】:

    猜你喜欢
    • 2021-09-09
    • 1970-01-01
    • 2012-09-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-21
    • 2019-04-21
    • 1970-01-01
    相关资源
    最近更新 更多