Hi Guys, Welcome to Proto Coders Point. Here is the solution for a problem statement * “Find the smallest positive number that does not appear in array”*. – JAVA PROGRAM

You car given a Array (Sorted/UnSorted), You need to search the missing small number in the array.

**Example**

Array *{ 1, 4, 5, 7, 6 }*

Here the missing smallest number starting from `1 to N`

is checked, so as you can see missing number in above array is ** 2**. After 1 we directly have 4, 5, 7, 6. Therefore 2 is smallest number & is missing .

**Example 2**

Array ** { 6, 5, 1, 2, 3, 7 }** output:

**.**

*4*## Source Code JAVA Program – To Find the positive smallest number missing in Array

import java.util.*; import java.util.Arrays; class HelloWorld { public static void main(String[] args) { int arr[] = {6,5,1,2,3,7}; int result = findMissSmall(arr); System.out.println(""+result ); } static public int findMissSmall(int[] A) { int len = A.length; int min=1; Arrays.sort(A); if(A[len-1]>0) for(int i=0; i<len; i++){ if(A[i]>0){ if(A[i]==min) min=min+1; if(A[i]>min) break; } } return min; } }

In code, we have manully declared an array & then we are passing the array to findMissSmall() function that iterate through the arrray and return us the smallest missing number in the list.

**Let’s understand how findMissSmall() function works**

- get length of array.
- set min = 1.
- sort the array.
- Perform for-loop to get smallest missing num.

**Let’s take the array for tracing with above program**

arr = { 6, 2, 1, 5 }

after sorting arr = { 1, 2, 5, 6 }

*In for loop*

**Iteration 1**

i = 0, len = 4, min = 1, arr = { 1, 2, 5, 6 }

if( A[i] == min ) // 1 = 1 true, so increment min

min = min + 1; // min = 2

**Iteration 2**

i = 1, len = 4, min = 2, arr = { 1, 2, 5, 6 }

if( A[i] == min ) // 2 = 2 true, so increment min

min = min + 1; // min = 3

**Iteration 3**

i = 2, len = 4, min = 3, arr = { 1, 2, 5, 6 }

if( A[i] == min ) // 5 = 3 false, so don’t increment min

min = min + 1;

if( A[i] > min)

break; // 5 > 3 true,

In iteration 3, A[i] is not equal to min **i.e** 5 != 3, so dont increment min, then check if A[i] > min **i.e** 5 > 3 so break the for loop and come out.

Finally we have found smallest missing number in Array, return **min = 3**.

**Note**: Trace above program by your own Array, it will improve your programming logic & skill & code thinking.