Dada una array de números y la tarea es insertar un número en la array ordenada usando JavaScript. Hay muchos enfoques para resolver este problema, dos de ellos se dan a continuación:
Enfoque 1:
- Primero tome los valores en una variable (vamos a arr).
- Asegúrate de que esté ordenado.
- En este ejemplo, la complejidad es O(n), donde n es el número de elementos disponibles en la array.
- El método findLoc busca el elemento justo mayor que el elemento que queremos insertar.
- El método devuelve el índice de la ubicación.
- realice la operación de inserción usando el método .splice() .
Ejemplo: Este ejemplo ilustra el enfoque discutido anteriormente.
<!DOCTYPE HTML> <html> <head> </head> <body style="text-align:center;" id="body"> <h1 style="color:green;"> GeeksforGeeks </h1> <p id="GFG_UP" style="font-size: 15px; font-weight: bold;"> </p> <button onclick="gfg_Run()"> Insert </button> <p id="GFG_DOWN" style="color:green; font-size: 20px; font-weight: bold;"> </p> <script> var el_up = document.getElementById("GFG_UP"); var el_down = document.getElementById("GFG_DOWN"); var today = new Date(); var arr = [1, 2, 4, 6, 9]; el_up.innerHTML = "Click on the button to insert a number "+ "in javascript array.<br> Array is = " + arr; function add(el, arr) { arr.splice(findLoc(el, arr) + 1, 0, el); return arr; } function findLoc(el, arr, st, en) { st = st || 0; en = en || arr.length; for (i = 0; i < arr.length; i++) { if (arr[i] > el) return i - 1; } return en; } function gfg_Run() { add(7, arr); el_down.innerHTML = "Array becomes " + arr; } </script> </body> </html>
Producción:
- Antes de hacer clic en el botón:
- Después de hacer clic en el botón:
Enfoque 2:
- En este ejemplo, la complejidad es O(Logn), donde n es el número de elementos de la array.
- Un método findLoc está buscando la ubicación donde debería estar presente el elemento.
- El método devuelve el índice de la ubicación mediante el uso de un algoritmo de búsqueda binaria .
- realice la operación de inserción usando el método .splice() .
Ejemplo: Este ejemplo ilustra el enfoque discutido anteriormente.
<!DOCTYPE HTML> <html> <head> </head> <body style="text-align:center;" id="body"> <h1 style="color:green;"> GeeksforGeeks </h1> <p id="GFG_UP" style="font-size: 15px; font-weight: bold;"> </p> <button onclick="gfg_Run()"> Insert </button> <p id="GFG_DOWN" style="color:green; font-size: 20px; font-weight: bold;"> </p> <script> var el_up = document.getElementById("GFG_UP"); var el_down = document.getElementById("GFG_DOWN"); var today = new Date(); var arr = [1, 2, 4, 6, 9]; el_up.innerHTML = "Click on the button to insert a "+ "number in javascript array.<br> Array is = " + arr; function add(el, arr) { arr.splice(findLoc(el, arr) + 1, 0, el); return arr; } function findLoc(el, arr, st, en) { st = st || 0; en = en || arr.length; var pivot = parseInt(st + (en - st) / 2, 10); if (en - st <= 1 || arr[pivot] === el) return pivot; if (arr[pivot] < el) { return findLoc(el, arr, pivot, en); } else { return findLoc(el, arr, st, pivot); } } function gfg_Run() { add(5, arr); el_down.innerHTML = "Array becomes " + arr; } </script> </body> </html>
Producción:
- Antes de hacer clic en el botón:
- Después de hacer clic en el botón:
Publicación traducida automáticamente
Artículo escrito por PranchalKatiyar y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA