Q muestra 0 y no el valor de c, ¿qué hay de malo en este código? ¿Me equivoco en la declaración de devolución?
archivo js principal
var q=0; search(a,21,q); document.getElementById("demo1").innerHTML = q;otro archivo js
function search(array, target, c) { left = 0; right = array.length - 1; while (left <= right) { mid = (left + right) / 2; if (array[Math.trunc(mid)] == target) { c = Math.trunc(mid); console.log(c); return array, target, c; } else if (target < array[mid]) { right = Math.trunc(mid) - 1; } else { left = Math.trunc(mid) + 1; } } }El número en JS es un tipo de datos primitivo y esos tipos se pasan por valor, por lo que copiará el valor de q en una nueva variable llamada c y si cambia c , q no cambiará.
puede devolver array[Math.trunc(mid)] y hacer algo como esto: document.getElementById("demo1").innerHTML = search(a,21);