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

## 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 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) ); } }

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

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

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

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

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

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

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