Search, insert and delete in a sorted array

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

// C++ program to implement binary search in sorted array
#include <iostream>
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, key)<<endl;
    return 0;
}
  
// This code is contributed by NamrataSrivastava1

chevron_right


C

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 program to check above functions */
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, key) );
   return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 program to test above function */
    public static void main (String[] args)
    {
       int arr[] = {5, 6, 7, 8, 9, 10};
       int n,key;
       n = arr.length;
       key =10;
       
       System.out.println("Index: "
           binarySearch(arr,0, n, key) );
    }    
}

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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, key) ))
  
# This code is contributed by
# Smitha Dinesh Semwal

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

using System;
  
// C# program to implement binary 
// search in a sorted array 
  
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 program to test above function */
    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, key));
    }
}
  
  // This code is contributed by Shrikant13

chevron_right


PHP

filter_none

edit
close

play_arrow

link
brightness_4
code

<?php
// PHP program to implement
// binary search in sorted array
  
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, $key);
  
// This code is contributed by
// Srathore
?>

chevron_right



Output:

Index: 5

Insert Operation

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



C

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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] + " ");
    }    
}

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right



Output:

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

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

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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; 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]);
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 program to test above function */
    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] + " ");
    }    
}

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

// 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 program to test above function */
    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

chevron_right



Output:

Array before deletion
10 20 30 40 50 

Array after deletion
10 20 40 50 

Search: O(Log n) [Using Binary Search]
Insert: O(n) [In worst case all elements may have to be moved]
Delete: O(n) [In worst case all elements may have to be moved]

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



My Personal Notes arrow_drop_up