Skip to content
Related Articles

Related Articles

Search, insert and delete in a sorted array
  • Difficulty Level : Basic
  • Last Updated : 13 Apr, 2021
GeeksforGeeks - Summer Carnival Banner

In this post search, insert and delete operation in a sorted array is discussed.

Search Operation

In a sorted array, the search operation can be performed by using binary search.
 

 



C++




// C++ program to implement binary search in sorted array
#include <bits/stdc++.h>
using namespace std;
 
int binarySearch(int arr[], int low, int high, int key)
{
    if (high < low)
        return -1;
    int mid = (low + high) / 2; /*low + (high - low)/2;*/
    if (key == arr[mid])
        return mid;
    if (key > arr[mid])
        return binarySearch(arr, (mid + 1), high, key);
    return binarySearch(arr, low, (mid - 1), key);
}
 
/* Driver code */
int main()
{
    // Let us search 3 in below array
    int arr[] = { 5, 6, 7, 8, 9, 10 };
    int n, key;
 
    n = sizeof(arr) / sizeof(arr[0]);
    key = 10;
 
    cout << "Index: " << binarySearch(arr, 0, n - 1, key)
         << endl;
    return 0;
}
 
// This code is contributed by NamrataSrivastava1

C




// C program to implement binary search in sorted array
#include <stdio.h>
 
int binarySearch(int arr[], int low, int high, int key)
{
    if (high < low)
        return -1;
    int mid = (low + high) / 2; /*low + (high - low)/2;*/
    if (key == arr[mid])
        return mid;
    if (key > arr[mid])
        return binarySearch(arr, (mid + 1), high, key);
    return binarySearch(arr, low, (mid - 1), key);
}
 
/* Driver Code */
int main()
{
    // Let us search 3 in below array
    int arr[] = { 5, 6, 7, 8, 9, 10 };
    int n, key;
 
    n = sizeof(arr) / sizeof(arr[0]);
    key = 10;
 
    printf("Index: %d\n", binarySearch(arr, 0, n-1, key));
    return 0;
}

Java




// Java program to implement binary
// search in a sorted array
 
class Main {
    // function to implement
    // binary search
    static int binarySearch(int arr[], int low, int high, int key)
    {
        if (high < low)
            return -1;
 
        /*low + (high - low)/2;*/
        int mid = (low + high) / 2;
        if (key == arr[mid])
            return mid;
        if (key > arr[mid])
            return binarySearch(arr, (mid + 1), high, key);
        return binarySearch(arr, low, (mid - 1), key);
    }
 
    /* Driver Code*/
    public static void main(String[] args)
    {
        int arr[] = { 5, 6, 7, 8, 9, 10 };
        int n, key;
        n = arr.length - 1;
        key = 10;
 
        System.out.println("Index: " + binarySearch(arr, 0, n, key));
    }
}

Python3




# python 3  program to implement
# binary search in sorted array
 
def binarySearch(arr, low, high, key):
 
    if (high < low):
        return -1
    # low + (high - low)/2
    mid = (low + high)/2
 
    if (key == arr[int(mid)]):
        return mid
 
    if (key > arr[int(mid)]):
        return binarySearch(arr,
           (mid + 1), high, key)
 
    return (binarySearch(arr, low,
           (mid -1), key))
 
# Driver program to check above functions
# Let us search 3 in below array
arr = [5, 6, 7, 8, 9, 10]
n = len(arr)
key = 10
print("Index:", int(binarySearch(arr, 0, n-1, key) ))
 
# This code is contributed by
# Smitha Dinesh Semwal

C#




// C# program to implement binary
// search in a sorted array
 
using System;
 
public class GFG {
    // function to implement
    // binary search
    public static int binarySearch(int[] arr, int low,
                                   int high, int key)
    {
        if (high < low) {
            return -1;
        }
 
        /*low + (high - low)/2;*/
        int mid = (low + high) / 2;
        if (key == arr[mid]) {
            return mid;
        }
        if (key > arr[mid]) {
            return binarySearch(arr, (mid + 1), high, key);
        }
        return binarySearch(arr, low, (mid - 1), key);
    }
 
    /* Driver Code */
    public static void Main(string[] args)
    {
        int[] arr = new int[] { 5, 6, 7, 8, 9, 10 };
        int n, key;
        n = arr.Length;
        key = 10;
 
        Console.WriteLine("Index: "
                          + binarySearch(arr, 0, n-1, key));
    }
}
 
// This code is contributed by Shrikant13

PHP




// PHP program to implement
// binary search in sorted array
<?php
 
function binarySearch($arr, $low,
                      $high, $key)
{
    if ($high < $low)
    return -1;
     
    // low + (high - low)/2
    $mid = ($low + $high) / 2;
     
    if ($key == $arr[(int)$mid])
        return $mid;
     
    if ($key > $arr[(int)$mid])
        return binarySearch($arr, ($mid + 1),
                            $high, $key);
     
    return (binarySearch($arr, $low,
                        ($mid -1), $key));
}
 
// Driver Code
 
// Let us search 3 in below array
$arr = array(5, 6, 7, 8, 9, 10);
$n = count($arr);
$key = 10;
echo "Index: ", (int)binarySearch($arr, 0,
                                  $n-1, $key);
 
// This code is contributed by
// Srathore
?>

Javascript




<script>
 
 
// Javascript program to implement
// binary search in sorted array
 
function binarySearch( arr, low, high, key)
{
    if (high < low)
        return -1;
        /*low + (high - low)/2;*/
    let mid = Math.trunc((low + high) / 2);
    if (key == arr[mid])
        return mid;
    if (key > arr[mid])
        return binarySearch(arr, (mid + 1), high, key);
    return binarySearch(arr, low, (mid - 1), key);
}
 
     
    // Driver program
     
    // Let us search 3 in below array
    let arr = [ 5, 6, 7, 8, 9, 10 ];
    let n, key;
 
    n = arr.length;
    key = 10;
 
    document.write( "Index: " + binarySearch(arr, 0, n - 1, key)
    + "</br>");
     
     
</script>
Output
Index: 5

 

Time Complexity of Search Operation: O(Log n) [Using Binary Search] 

Insert Operation

In an unsorted array, the insert operation is faster as compared to the sorted array because we don’t have to care about the position at which the element to be placed.
 

 

C++




// C++ program to implement insert operation in
// an sorted array.
#include <iostream>
using namespace std;
 
// Inserts a key in arr[] of given capacity. n is current
// size of arr[]. This function returns n+1 if insertion
// is successful, else n.
int insertSorted(int arr[], int n, int key, int capacity)
{
    // Cannot insert more elements if n is already
    // more than or equal to capcity
    if (n >= capacity)
        return n;
 
    int i;
    for (i = n - 1; (i >= 0 && arr[i] > key); i--)
        arr[i + 1] = arr[i];
 
    arr[i + 1] = key;
 
    return (n + 1);
}
 
/* Driver code */
int main()
{
    int arr[20] = { 12, 16, 20, 40, 50, 70 };
    int capacity = sizeof(arr) / sizeof(arr[0]);
    int n = 6;
    int i, key = 26;
 
    cout<< "\nBefore Insertion: ";
    for (i = 0; i < n; i++)
        cout << arr[i] << " ";
 
    // Inserting key
    n = insertSorted(arr, n, key, capacity);
 
    cout << "\nAfter Insertion: ";
    for (i = 0; i < n; i++)
        cout << arr[i]<< " ";
 
    return 0;
}
 
// This code is contributed by SHUBHAMSINGH10

C




// C program to implement insert operation in
// an sorted array.
#include <stdio.h>
 
// Inserts a key in arr[] of given capacity.  n is current
// size of arr[]. This function returns n+1 if insertion
// is successful, else n.
int insertSorted(int arr[], int n, int key, int capacity)
{
    // Cannot insert more elements if n is already
    // more than or equal to capcity
    if (n >= capacity)
        return n;
 
    int i;
    for (i = n - 1; (i >= 0 && arr[i] > key); i--)
        arr[i + 1] = arr[i];
 
    arr[i + 1] = key;
 
    return (n + 1);
}
 
/* Driver program to test above function */
int main()
{
    int arr[20] = { 12, 16, 20, 40, 50, 70 };
    int capacity = sizeof(arr) / sizeof(arr[0]);
    int n = 6;
    int i, key = 26;
 
    printf("\nBefore Insertion: ");
    for (i = 0; i < n; i++)
        printf("%d  ", arr[i]);
 
    // Inserting key
    n = insertSorted(arr, n, key, capacity);
 
    printf("\nAfter Insertion: ");
    for (i = 0; i < n; i++)
        printf("%d  ", arr[i]);
 
    return 0;
}

Java




// Java program to insert an
// element in a sorted array
 
class Main {
    // Inserts a key in arr[] of given
    // capacity.  n is current size of arr[].
    // This function returns n+1 if insertion
    // is successful, else n.
    static int insertSorted(int arr[], int n, int key, int capacity)
    {
        // Cannot insert more elements if n is already
        // more than or equal to capcity
        if (n >= capacity)
            return n;
 
        int i;
        for (i = n - 1; (i >= 0 && arr[i] > key); i--)
            arr[i + 1] = arr[i];
 
        arr[i + 1] = key;
 
        return (n + 1);
    }
 
    /* Driver program to test above function */
    public static void main(String[] args)
    {
        int arr[] = new int[20];
        arr[0] = 12;
        arr[1] = 16;
        arr[2] = 20;
        arr[3] = 40;
        arr[4] = 50;
        arr[5] = 70;
        int capacity = arr.length;
        int n = 6;
        int key = 26;
 
        System.out.print("\nBefore Insertion: ");
        for (int i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
 
        // Inserting key
        n = insertSorted(arr, n, key, capacity);
 
        System.out.print("\nAfter Insertion: ");
        for (int i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
    }
}

Python3




# Python3 program to implement insert
# operation in an sorted array.
 
# Inserts a key in arr[] of given capacity.
# n is current size of arr[]. This function
# returns n+1 if insertion is successful, else n.
def insertSorted(arr, n, key, capacity):
     
    # Cannot insert more elements if n is
    # already more than or equal to capcity
    if (n >= capacity):
        return n
 
    i = n - 1
    while i >= 0 and arr[i] > key:
        arr[i + 1] = arr[i]
        i -= 1
 
    arr[i + 1] = key
 
    return (n + 1)
 
# Driver Code
arr = [12, 16, 20, 40, 50, 70]
 
for i in range(20):
    arr.append(0)
 
capacity = len(arr)
n = 6
key = 26
 
print("Before Insertion: ", end = " ");
for i in range(n):
    print(arr[i], end = " ")
     
# Inserting key
n = insertSorted(arr, n, key, capacity)
 
print("\nAfter Insertion: ", end = "")
for i in range(n):
    print(arr[i], end = " ")
 
# This code is contributed by Mohit Kumar

C#




using System;
 
// C# program to insert an
// element in a sorted array
 
public class GFG {
    // Inserts a key in arr[] of given
    // capacity.  n is current size of arr[].
    // This function returns n+1 if insertion
    // is successful, else n.
    public static int insertSorted(int[] arr, int n, int key, int capacity)
    {
        // Cannot insert more elements if n is already
        // more than or equal to capcity
        if (n >= capacity) {
            return n;
        }
 
        int i;
        for (i = n - 1; (i >= 0 && arr[i] > key); i--) {
            arr[i + 1] = arr[i];
        }
 
        arr[i + 1] = key;
 
        return (n + 1);
    }
 
    /* Driver program to test above function */
    public static void Main(string[] args)
    {
        int[] arr = new int[20];
        arr[0] = 12;
        arr[1] = 16;
        arr[2] = 20;
        arr[3] = 40;
        arr[4] = 50;
        arr[5] = 70;
        int capacity = arr.Length;
        int n = 6;
        int key = 26;
 
        Console.Write("\nBefore Insertion: ");
        for (int i = 0; i < n; i++) {
            Console.Write(arr[i] + " ");
        }
 
        // Inserting key
        n = insertSorted(arr, n, key, capacity);
 
        Console.Write("\nAfter Insertion: ");
        for (int i = 0; i < n; i++) {
            Console.Write(arr[i] + " ");
        }
    }
}
 
// This code is contributed by Shrikant13
Output



Before Insertion: 12 16 20 40 50 70 
After Insertion: 12 16 20 26 40 50 70 

Time Complexity of Insert Operation : O(n) [In the worst case all elements may have to be moved] 
 

Delete Operation

In delete operation, the element to be deleted is searched using binary search and then delete operation is performed followed by shifting the elements.
 

 

C++




// C++ program to implement delete operation in a
// sorted array
#include <iostream>
using namespace std;
 
// To search a ley to be deleted
int binarySearch(int arr[], int low, int high, int key);
 
/* Function to delete an element */
int deleteElement(int arr[], int n, int key)
{
    // Find position of element to be deleted
    int pos = binarySearch(arr, 0, n - 1, key);
 
    if (pos == -1)
    {
        cout << "Element not found";
        return n;
    }
 
    // Deleting element
    int i;
    for (i = pos; i < n - 1; i++)
        arr[i] = arr[i + 1];
 
    return n - 1;
}
 
int binarySearch(int arr[], int low, int high, int key)
{
    if (high < low)
        return -1;
    int mid = (low + high) / 2;
    if (key == arr[mid])
        return mid;
    if (key > arr[mid])
        return binarySearch(arr, (mid + 1), high, key);
    return binarySearch(arr, low, (mid - 1), key);
}
 
// Driver code
int main()
{
    int i;
    int arr[] = { 10, 20, 30, 40, 50 };
 
    int n = sizeof(arr) / sizeof(arr[0]);
    int key = 30;
 
    cout << "Array before deletion\n";
    for (i = 0; i < n; i++)
        cout << arr[i] << " ";
 
    n = deleteElement(arr, n, key);
 
    cout << "\n\nArray after deletion\n";
    for (i = 0; i < n; i++)
        cout << arr[i] << " ";
}
 
// This code is contributed by shubhamsingh10

C




// C program to implement delete operation in a
// sorted array
#include <stdio.h>
 
// To search a ley to be deleted
int binarySearch(int arr[], int low, int high, int key);
 
/* Function to delete an element */
int deleteElement(int arr[], int n, int key)
{
    // Find position of element to be deleted
    int pos = binarySearch(arr, 0, n - 1, key);
 
    if (pos == -1) {
        printf("Element not found");
        return n;
    }
 
    // Deleting element
    int i;
    for (i = pos; i < n - 1; i++)
        arr[i] = arr[i + 1];
 
    return n - 1;
}
 
int binarySearch(int arr[], int low, int high, int key)
{
    if (high < low)
        return -1;
    int mid = (low + high) / 2;
    if (key == arr[mid])
        return mid;
    if (key > arr[mid])
        return binarySearch(arr, (mid + 1), high, key);
    return binarySearch(arr, low, (mid - 1), key);
}
 
// Driver code
int main()
{
    int i;
    int arr[] = { 10, 20, 30, 40, 50 };
 
    int n = sizeof(arr) / sizeof(arr[0]);
    int key = 30;
 
    printf("Array before deletion\n");
    for (i = 0; i < n; i++)
        printf("%d  ", arr[i]);
 
    n = deleteElement(arr, n, key);
 
    printf("\n\nArray after deletion\n");
    for (i = 0; i < n; i++)
        printf("%d  ", arr[i]);
}

Java




// Java program to delete an
// element from a sorted array
 
class Main {
    // binary search
    static int binarySearch(int arr[], int low, int high, int key)
    {
        if (high < low)
            return -1;
        int mid = (low + high) / 2;
        if (key == arr[mid])
            return mid;
        if (key > arr[mid])
            return binarySearch(arr, (mid + 1), high, key);
        return binarySearch(arr, low, (mid - 1), key);
    }
 
    /* Function to delete an element */
    static int deleteElement(int arr[], int n, int key)
    {
        // Find position of element to be deleted
        int pos = binarySearch(arr, 0, n - 1, key);
 
        if (pos == -1) {
            System.out.println("Element not found");
            return n;
        }
 
        // Deleting element
        int i;
        for (i = pos; i < n - 1; i++)
            arr[i] = arr[i + 1];
 
        return n - 1;
    }
 
    /* Driver Code */
    public static void main(String[] args)
    {
 
        int i;
        int arr[] = { 10, 20, 30, 40, 50 };
 
        int n = arr.length;
        int key = 30;
 
        System.out.print("Array before deletion:\n");
        for (i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
 
        n = deleteElement(arr, n, key);
 
        System.out.print("\n\nArray after deletion:\n");
        for (i = 0; i < n; i++)
            System.out.print(arr[i] + " ");
    }
}

Python3




# Python program to implement delete operation in a
# sorted array
 
#/* Function to delete an element */
def deleteElement(arr, n, key):
     
    # Find position of element to be deleted
    pos = binarySearch(arr, 0, n - 1, key)
     
    if (pos == -1):
        print("Element not found")
        return n
         
    # Deleting element
    for i in range(pos,n - 1):
        arr[i] = arr[i + 1]
     
    return n - 1
     
# To search a ley to be deleted
def binarySearch(arr, low, high, key):
     
    if (high < low):
        return -1
    mid = (low + high) // 2
     
    if (key == arr[mid]):
        return mid
    if (key > arr[mid]):
        return binarySearch(arr, (mid + 1), high, key)
     
    return binarySearch(arr, low, (mid - 1), key)
  
# Driver code
arr = [10, 20, 30, 40, 50 ]
 
n = len(arr)
key = 30
 
print("Array before deletion")
 
for i in range(n):
    print(arr[i],end=" ")
     
n = deleteElement(arr, n, key)
print("\n\nArray after deletion")
for i in range(n):
    print(arr[i],end=" ")
 
# This code is contributed by shubhamsingh10

C#




// C# program to delete an
// element from a sorted array
using System;
public class GFG {
    // binary search
    static int binarySearch(int[] arr, int low, int high, int key)
    {
        if (high < low)
            return -1;
        int mid = (low + high) / 2;
        if (key == arr[mid])
            return mid;
        if (key > arr[mid])
            return binarySearch(arr, (mid + 1), high, key);
        return binarySearch(arr, low, (mid - 1), key);
    }
 
    /* Function to delete an element */
    static int deleteElement(int[] arr, int n, int key)
    {
        // Find position of element to be deleted
        int pos = binarySearch(arr, 0, n - 1, key);
 
        if (pos == -1) {
            Console.WriteLine("Element not found");
            return n;
        }
 
        // Deleting element
        int i;
        for (i = pos; i < n - 1; i++)
            arr[i] = arr[i + 1];
 
        return n - 1;
    }
 
    /* Driver Code */
    public static void Main()
    {
 
        int i;
        int[] arr = { 10, 20, 30, 40, 50 };
 
        int n = arr.Length;
        int key = 30;
 
        Console.Write("Array before deletion:\n");
        for (i = 0; i < n; i++)
            Console.Write(arr[i] + " ");
 
        n = deleteElement(arr, n, key);
 
        Console.Write("\n\nArray after deletion:\n");
        for (i = 0; i < n; i++)
            Console.Write(arr[i] + " ");
    }
}
 
// This code is contributed by Rajput-Ji
Output
Array before deletion
10 20 30 40 50 

Array after deletion
10 20 40 50 

Time Complexity of Delete Operation : O(n) [In worst case all elements may have to be moved]
 

?list=PLqM7alHXFySEQDk2MDfbwEdjd2svVJH9p
 

 

 

If you like GeeksforGeeks and would like to contribute, you can also write an article and mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks. 
Please write comments if you find anything incorrect, or you want to share more information about the topic discussed above 
 

 

 

 

Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.

My Personal Notes arrow_drop_up
Recommended Articles
Page :