home *** CD-ROM | disk | FTP | other *** search
- /*
- ** Determine the permutation index for a given permutation list.
- ** Written by Thad Smith III, Boulder, CO 8/31/91
- ** Hereby contributed to the Public Domain.
- **
- ** The following function computes the ordinal of the given permutation,
- ** which is index of the permutation in sorting order:
- ** 1, 2, ..., n-1, n is index 0
- ** 1, 2, ..., n, n-1 is index 1
- ** ...
- ** n, n-1, ..., 2, 1 is index n! -1
- **
- ** The actual values of the elements are immaterial, only the relative
- ** ordering of the values is used.
- **
- ** pit[] is the array of elements of length size.
- ** The return value is the permutation index.
- */
-
- int perm_index (char pit[], int size)
- {
- int i;
- register int j, ball;
- int index = 0;
-
- for (i = 1; i < size; i++)
- {
- ball = pit[i-1];
- for (j = i; j < size; j++)
- {
- if (ball > pit[j])
- index ++;
- }
- index *= size - i;
- }
- return index;
- }
-