Class PermuteArray


  • public class PermuteArray
    extends java.lang.Object
    Generates a permutations of an integer set from 0 to N-1. This can either be generated all at once as a list of one at a time.
    • Constructor Summary

      Constructors 
      Constructor Description
      PermuteArray​(int N)  
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      static java.util.List<int[]> createList​(int N)
      Creates a list of all permutations for a set with N elements.
      static int fact​(int N)
      Computes N factorial
      int[] next()
      Creates the next permutation in the sequence.
      int sgn()
      Returns signature of the permutation.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • PermuteArray

        public PermuteArray​(int N)
    • Method Detail

      • sgn

        public int sgn()

        Returns signature of the permutation. This is the sgn() operator and returns -1 or 1 depending on it being odd or even.
        sgn(σ) = ( − 1)m

        where m is the number of inversions.

        NOTE: This implementation is painfully slow O(N!). There is probably another algorithm out there which is much faster.

        Returns:
        -1 or 1 for odd or even permutations.
      • fact

        public static int fact​(int N)
        Computes N factorial
      • createList

        public static java.util.List<int[]> createList​(int N)
        Creates a list of all permutations for a set with N elements.
        Parameters:
        N - Number of elements in the list being permuted.
        Returns:
        A list containing all the permutations.
      • next

        public int[] next()
        Creates the next permutation in the sequence.
        Returns:
        An array containing the permutation. The returned array is modified each time this function is called.