
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Sorted Arrays in C++
Here we will see some basic concepts of the sorted arrays. The arrays are homogeneous data structure to hold same kind of data in some consecutive memory locations. Sometimes we need to sort the elements to use them. Other than that we can make a sorted array. That will always be sorted.
In this case we will see the algorithms for insert and delete into sorted array. If we insert some element in it, it will automatically be placed at sorted position. So we do not need to sort it again after insertion. When we delete, it will delete the element, and fill the empty space by shifting the elements at right. As we are using sorted array, we will use binary search algorithm to find the element before deleting it.
Algorithm
insertSorted(arr, n, key): Begin if n >= max size of the array, then return otherwise i := n – 1 while i >= 0 and arr[i] > key, do arr[i + 1] := arr[i] i := i - 1 done arr[i + 1] := key n := n + 1 End deleteSorted(arr, n, key): Begin pos := search key into arr if pos is -1, then item is not found, and return otherwise i := pos while i < n – 1, do arr[i] := arr[i + 1] i := i + 1 done n := n + 1 End
Example
#include <iostream> #define MAX 10 using namespace std; void display(int arr[], int n){ for(int i = 0; i <n; i++){ cout << arr[i] << " "; } cout << endl; } int search(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 search(arr, (mid + 1), high, key); return search(arr, low, (mid - 1), key); } void insertSorted(int arr[], int &n, int key){ if (n >= MAX){ cout << "No place to insert"; return; } int i; for (i = n - 1; (i >= 0 && arr[i] > key); i--) arr[i + 1] = arr[i]; arr[i + 1] = key; n = n + 1; } void deleteSorted(int arr[], int &n, int key){ int key_pos = search(arr, 0, n, key); if(key_pos == -1){ cout << "Element is not present." << endl; return; } int i; for (i = key_pos; i < n - 1; i++) arr[i] = arr[i + 1]; n = n - 1; } int main() { int arr[MAX]; int n = 0; insertSorted(arr, n, 10); insertSorted(arr, n, 20); insertSorted(arr, n, 30); insertSorted(arr, n, 40); insertSorted(arr, n, 50); insertSorted(arr, n, 60); insertSorted(arr, n, 70); display(arr, n); deleteSorted(arr, n, 35); deleteSorted(arr, n, 40); deleteSorted(arr, n, 60); display(arr, n); }
Output
10 20 30 40 50 60 70 Element is not present. 10 20 30 50 70