# Find All the Subarrays of a Given Array in Java

An array is a linear data structure in which elements are stored in contiguous memory locations.

As per problem statement, we have to find all the subarrays of a given array. Subarrays are part or a section of an array. When we talk about all subarrays of an array, we talk about the total number of combinations that can be made using all the elements of the array without repeating.

Let’s explore the article to see how it can be done by using Java programming language.

## To Show you Some Instances

### Instance-1

Suppose we have the below array

[10, 2, 3, -5, 99, 12, 0, -1]

The subarrays of this array would be

10
10 2
10 2 3
10 2 3 -5
10 2 3 -5 99
10 2 3 -5 99 12
10 2 3 -5 99 12 0
10 2 3 -5 99 12 0 -1
2
2 3
2 3 -5
2 3 -5 99
2 3 -5 99 12
2 3 -5 99 12 0
2 3 -5 99 12 0 -1
3
3 -5
3 -5 99
3 -5 99 12
3 -5 99 12 0
3 -5 99 12 0 -1
-5
-5 99
-5 99 12
-5 99 12 0
-5 99 12 0 -1
99
99 12
99 12 0
99 12 0 -1
12
12 0
12 0 -1
0
0 -1
-1


### Instance-2

Suppose we have the below array

[55,10,29,74]

The subarrays of this array would be

55
55 10
55 10 29
55 10 29 74
10
10 29
10 29 74
29
29 74
74


## Algorithm

### Algorithm-1

• Step 1 − After storing the array, run a for loop from 0 to n. This will mark our starting point of the main array.

• Step 2 − Run another for loop that runs from the first iterator to the ending point of the main array.

• Step 3 − Now run another loop that traverses the elements between both two iterators.

• Step 4 − Print the elements in a sequential order.

### Algorithm-2

• Step 1 − After storing the array, check if we have reached the end, then go out of the function.

• Step 2 − If the start index is greater than the end index, then call the function itself from 0 to end+1.

• Step 3 − Else print the array elements between the indices inside a for loop, and call the function again from start+1 to end.

• Step 4 − Exit.

## Syntax

To get the length of an array (number of elements in that array), there is an inbuilt property of array i.e length

Below refers to the syntax of it −

array.length


where, ‘array’ refers to the array reference.

You can use Arrays.sort() method to sort the array in ascending order.

Arrays.sort(array_name);


## Multiple Approaches

We have provided the solution in different approaches.

• By Using for Loops

• By Using Recursion

Let’s see the program along with its output one by one.

## Approach-1: By Using for Loops

In this approach, we will use three for loops to find the subarrays of an array. The first loop to mark the start and the second to mark the end of the subarray, while the third prints the subarray.

### Example

import java.io.*;
public class Main {
public static void main(String[] args) {

// The array elements
int arr[] = { 10, 2, 3, 99, 12, 0 };
System.out.println("The subarrays are-");

// For loop for start index
for (int i = 0; i < arr.length; i++)

// For loop for end index
for (int j = i; j < arr.length; j++) {

// For loop to print subarray elements
for (int k = i; k <=j; k++)
System.out.print(arr[k] + " ");
System.out.println("");
}
}
}


### Output

The subarrays are-
10
10 2
10 2 3
10 2 3 99
10 2 3 99 12
10 2 3 99 12 0
2
2 3
2 3 99
2 3 99 12
2 3 99 12 0
3 3 99 3 99 12 3 99 12 0
99
99 12
99 12 0
12 12 0
0


## Approach-2: By Using Recursion

In this approach, we find all the subarrays but using recursion.

### Example

import java.io.*;
public class Main {
//main method
public static void main(String[] args) {
// The array elements
int arr[] = { 10, 2, 3};
System.out.println("The subarrays are-");

// Calling the recursive function
printSubArrays(arr, 0, 0);
}

// Recursive FUnction to Find all the subarrays
static void printSubArrays(int[] arr, int head, int tail) {

// Exits the function if we have reached the end
if (tail == arr.length)
return;

// Increases the first index and calls itself
printSubArrays(arr, 0, tail + 1);

// Print the subarray and then increases the first element index
else {
for (int i = head; i < tail; i++)
System.out.print(arr[i] + " ");
System.out.println(arr[tail]);
}
return;
}
}


### Output

The subarrays are-
10
10 2
2
10 2 3
2 3
3


In this article, we explored how to find all the subarrays of a given array by using Java programming language.