Permutation Coefficient in JavaPermutation can be defined as, the process of arranging all the members of a given set to form a sequence. The permutation coefficient is represented by P(n, r). It gives the number of permutations of n elements taking r at a time. Thus, if we have to find the P(5, 2), then it means there are 5 elements (n = 5), and one can take any 2 elements from it (r = 2), and the task is to find the number of ways one can take those 2 elements. In this section, we will discuss the permutation coefficient and how to calculate it. Also, we will create a Java program for the same. Suppose, those 5 elements are 1, 2, 3, 4, and 5, and the 2 elements we can take are: (1, 2) (1, 3) (1, 4) (1, 5) (2, 1) (2, 3) (2, 4) (2, 5) (3, 1) (3, 2) (3, 4) (3, 5) (4, 1) (4, 2) (4, 3) (4, 5) (5, 1) (5, 2) (5, 3) (5, 5) If we count the mentioned pairs, we get 20. Thus, there are 20 ways one can select those 2 elements from the set of 5 elements (1, 2, 3, 4, 5). Mathematically, we can compute the value of P(n, r) by using the following formula: Thus, P(5, 2) = 5! / (5  2)! = 5! / 3! = (5 x 4 x 3 x 2 x 1) / (3 x 2 x 1) = 120 / 6 = 20 P(7, 4) = 7! / (7  4)! = 7! / 3! = (7 x 6 x 5 x 4 x 3 x 2 x 1) / (3 x 2 x 1) = 5040 / 6 = 840 Note:
ImplementationLet's compute the value of P(n, r) through a Java program. Using ArrayFileName: PermCoefficient.java Output: The value of (7, 4) is: 840 The value of (5, 2) is: 20 Timecomplexity: The time complexity of the above program is O(n + r). It is because the forloop mentioned in the method findFactorial() runs twice: one for the value n and another for the value of r. Another ApproachThe other way to find the value of P(n, r) is mentioned below. P(n, r) = P(n  1, r) + r x P(n  1, r  1) If n < r, then P(n, r) = 0 and P(n, 0) = 1 & P(n, n) = n! & P(n, 1) = n Thus, P(10, 2) = P(10  1, 2) + 2 x P(10  1, 2  1) P(10, 2) = P(9, 2) + 2 x P(9, 1) P(10, 2) = P(9, 2) + 2 x 9 = P(9, 2) + 18  Equation A Now, we will calculate the value of P(9, 2) P(9, 2) = P(9  1, 2) + 2 x P(9  1, 2  1) = P(8, 2) + 2 x P(8, 1)  Equation B = P(8, 2) + 2 x 8 = P(8, 2) + 16 P(8, 2) = P(8  1, 2) + 2 x P(8  1, 2  1) = P(7, 2) + 2 x P(7, 1) = P(7, 2) + 2 x 7 = P(7, 2) + 14  Equation C P(7, 2) = P(7  1, 2) + 2 x P(7  1, 2  1) = P(6, 2) + 2 x P(6, 1) = P(6, 2) + 2 x 6 = P(6, 2) + 12  Equation D P(6, 2) = P(6  1, 2) + 2 x P(6  1, 2  1) = P(5, 2) + 2 x P(5, 1) = P(5, 2) + 2 x 5 = P(5, 2) + 10  Equation E P(5, 2) = P(5  1, 2) + 2 x P(5  1, 2  1) = P(4, 2) + 2 x P(4, 1) = P(4, 2) + 2 x 4 = P(4, 2) + 8 Equation F P(4, 2) = P(4  1, 2) + 2 x P(4  1, 2  1) = P(3, 2) + 2 x P(3, 1) = P(3, 2) + 2 x 3 = P(3, 2) + 6 Equation G P(3, 2) = P(3  1, 2) + 2 x P(3  1, 2  1) = P(2, 2) + 2 x P(2, 1) = 2! + 2 x 2 = 2 x 1 + 2 x 2 = 2 + 4 = 6 Using the value of P(3, 2) in equation G, we get P(4, 2) = P(3, 2) + 6 = 6 + 6 = 12 Using the value of P(4, 2) in equation F, we get P(5, 2) = P(4, 2) + 8 = 12 + 8 = 20 Using the value of P(5, 2) in equation E, we get P(6, 2) = P(5, 2) + 10 = 20 + 10 = 30 Using the value of P(6, 2) in equation D, we get P(7, 2) = P(6, 2) + 12 = 30 + 12 = 42 Using the value of P(7, 2) in equation C, we get P(8, 2) = P(7, 2) + 14 = 42 + 14 = 56 Using the value of P(8, 2) in equation B, we get P(9, 2) = P(8, 2) + 16 = 56 + 16 = 72 Using the value of P(9, 2) in equation A, we get P(10, 2) = P(9, 2) + 18 = 72 + 18 = 90 Recursive ApproachLet's see the implementation of it using recursion. FileName: PermutationCoeff.java Output: The Value of P(10, 2) is: 90 The Value of P(7, 3) is: 210 Iterative Approach1Let's see the implementation of it using nested forloops and twodimensional array. FileName: PermutationCoeff1.java Output: The Value of P(10, 2) is: 90 The Value of P(7, 3) is: 210 In the above program, we have used the nested forloops for computing the value of P(n, r). Because of the nested forloops, the time complexity of the above program is O(n * r). The space complexity is also O(n * r). However, we can do the optimization and reduce the time as well the space complexity to O(n). Iterative Approach2Let's see the implementation in which we have used a single forloop and onedimensional array. FileName: PermutationCoeff2.java Output: The Value of P(10, 2) is: 90 The Value of P(7, 3) is: 210 We can further do the optimization and reduce the space complexity to O(1). However, the time complexity still remains the same, which is O(n). Observe the following program. Iterative Approach3Let's see the implementation of it using a single forloop. FileName: PermutationCoeff3.java Output: The Value of P(10, 2) is: 90 The Value of P(7, 3) is: 210
Next TopicConvert List to String in Java
