одни и те же числа, разные методы ввода, разные выводы - PullRequest
0 голосов
/ 31 мая 2019

При пузырьковой сортировке массива он будет выдавать разные выходные данные в зависимости от метода ввода, вручную он сортирует правильно, в случайном порядке - нет. Есть идеи? цель состоит в том, чтобы отсортировать числа по возрастанию

Я уже пытался делать те же входные данные вручную, как и в случайном порядке, но все равно не работал случайным образом.

    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 голосов
/ 31 мая 2019

toFixed() - это функция форматирования.Он вернет строку, которая представляет данное число.Если в вашем массиве есть строки, ваша функция сортировки будет использовать сравнение строк для их сравнения (где "20" <"4"). </p>

Убедитесь, что массив содержит числа, например, удалив форматирование:

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

Если вы хотите просто целые числа, используйте Math.round().

...