相同的数字,不同的输入方法,不同的输出

时间:2019-05-30 22:15:43

标签: javascript math random bubble-sort

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

我已经尝试过手动进行与随机输入相同的输入,但是对于随机输入仍然无效。

    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"]

1 个答案:

答案 0 :(得分:0)

toFixed()是一种格式化功能。它将返回一个代表给定数字的字符串。数组中有字符串后,排序函数将使用字符串比较来比较它们(其中“ 20” <“ 4”)。

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

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

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