在对数组进行冒泡排序时,它会根据输入方法提供不同的输出,手动将其正确排序,而不会进行随机排序。有任何想法吗?目的是将数字从最低到最高排序
我已经尝试过手动进行与随机输入相同的输入,但是对于随机输入仍然无效。
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"]
答案 0 :(得分:0)
toFixed()
是一种格式化功能。它将返回一个代表给定数字的字符串。数组中有字符串后,排序函数将使用字符串比较来比较它们(其中“ 20” <“ 4”)。
确保数组包含数字,例如通过删除格式:
valores.push(((Math.random()) * 100))
如果只需要整数,请使用Math.round()
。