Open In App

What is the Efficient way to insert a number into a sorted array of numbers in JavaScript ?

Given an array of numbers and the task is to insert a number into the sorted array using JavaScript. There are many approaches to solving this problem two of which are given below: 

Approach 1:



Example: This example illustrates the approach discussed above. 




<h1 style="color:green;">
    GeeksforGeeks
</h1>
<p id="GFG_UP">
</p>
<button onclick="gfg_Run()">
    Insert
</button>
<p id="GFG_DOWN">
</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>

Output:



What is the Efficient way to insert a number into a sorted array of numbers in JavaScript?

Approach 2:

Example: This example illustrate the approach discussed above. 




<h1 style="color:green;">
    GeeksforGeeks
</h1>
<p id="GFG_UP"></p>
<button onclick="gfg_Run()">
    Insert
</button>
<p id="GFG_DOWN"></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>

Output:

What is the Efficient way to insert a number into a sorted array of numbers in JavaScript?


Article Tags :