# Permutation program in Java

Combinatorics' basic idea of permutations is the arrangement of a collection of items in several orders. We'll go through several techniques for creating permutations in Java and include code samples along with thorough explanations.

## How Do Permutations Occur?

A permutation is the organization of elements in a particular sequence. It involves arranging the members of a set in a specific linear or sequential order. For example, consider the set A={11,66}. In this problem, there are only two possible permutations: {11,66} and {66,11}. There are no other possible permutations for this set.

### Method 1: Recursive Technique

Recursive methods are among the easiest techniques to produce permutations. This Java program uses recursion to produce array permutations:

PermutationsRecursive.java

Output:

```[100, 120, 230]
[100, 230, 120]
[120, 100, 230]
[120, 230, 100]
[230, 100, 120]
[230, 120, 100]
```

Explanation

This code uses recursion to create permutations of the array. It outputs the various ordering that are created by switching around the elements in the array. In the simplest scenario, the array is printed when n, its length, equals 1.

### Approach 2: Lexicographic Sequence

Lexicographic order is another way to create permutations. When you need to find permutations in a certain order, this approach may be used to produce permutations one by one. This Java program produces lexicographically ordered permutations.

PermutationsLexicographic.java

Output:

```[100, 120, 230]
[100, 230, 120]
[120, 100, 230]
[120, 230, 100]
[230, 100, 120]
[230, 120, 100]
```

Explanation

The items in this code are first sorted, and we iteratively discover the next lexicographically greater permutation. The generatePermutations technique makes use of the fact that identifying the rightmost element that may be increased provides the foundation for each step.

### Method 3: Without External Libraries

PermutationsWithoutLibraries.java

Output:

```[100, 120, 230]
[100, 230, 120]
[120, 100, 230]
[120, 230, 100]
[230, 100, 120]
[230, 120, 100]
```

Explanation

Using the list of components, the current permutation, and a list to hold the results, we build a recursive function called generatePermutations in this code. By adding each element to the current permutation and eliminating it from the remaining components, the function iteratively produces all possible permutations.

## Conclusion

Creating permutations is a frequent issue that may be solved in several ways. We studied three approaches using Java: lexicographic order, recursive, and utilizing Collections. The strategy you choose will rely on your unique needs and limitations. These examples ought to aid in your comprehension of the fundamentals of Java permutation generation and lay the groundwork for more difficult permutation-related activities.