C++ Exercises: Find the smallest element missing in a sorted array

C++ Array: Exercise-10 with Solution

Write a C++ program to find the smallest element missing in a sorted array.

Pictorial Presentation:

C++ Exercises: Find the smallest element missing in a sorted array

Sample Solution:

C++ Code :

using namespace std;

int smalest_missing_num(int nums[], int start_pos, int end_pos)
    if (start_pos  > end_pos)
        return end_pos + 1;
    if (start_pos != nums[start_pos])
        return start_pos;
    int mid = (start_pos + end_pos) / 2;
    if (nums[mid] == mid)
        return smalest_missing_num(nums, mid + 1, end_pos);
    return smalest_missing_num(nums, start_pos, mid);
int main()
    int nums[] = {0, 1, 3, 4, 5, 6, 7, 8, 10};
    int result;
	int n = sizeof(nums)/sizeof(nums[0]);
	cout << "Original array: ";
    for (int i=0; i < n; i++) 
    cout << nums[i] <<" ";
    result = smalest_missing_num(nums, 0, n-1);
    cout << "\nSmallest missing element is " << result;
  return 0;     

Sample Output:

Original array: 0 1 3 4 5 6 7 8 10 
Smallest missing element is 2


Flowchart: Find the smallest element missing in a sorted array

C++ Code Editor:

Contribute your code and comments through Disqus.

Previous: Write a C++ program to sort a given unsorted array of integers, in wave form.
Next: Write a C++ program to update every array element by multiplication of next and previous values of a given array of integers.

What is the difficulty level of this exercise?

Test your Programming skills with w3resource's quiz.

Share this Tutorial / Exercise on : Facebook and Twitter

C++ Programming: Tips of the Day

Can I assume (bool)true == (int)1 for any C++ compiler?

According to the standard, you should be safe with that assumption. The C++ bool type has two values - true and false with corresponding values 1 and 0.

The thing to watch about for is mixing bool expressions and variables with BOOL expression and variables. The latter is defined as FALSE = 0 and TRUE != FALSE, which quite often in practice means that any value different from 0 is considered TRUE.

A lot of modern compilers will actually issue a warning for any code that implicitly tries to cast from BOOL to bool if the BOOL value is different than 0 or 1

Ref: https://bit.ly/3PWhs5N