#include "BSprivate.h"

/*+ BSglobal_perm - Find a permutation based on a numbering

    Input Parameters:
.   numbering - the numbering to find a permutation for

    Returns:
    the permutation that will put the numbering into sorted order

+*/
BSpermutation *BSglobal_perm(BSnumbering *numbering)
{
	BSpermutation *perm, *iperm;
	int	i;

	perm = BSalloc_permutation(numbering->length); CHKERRN(0);
	iperm = BSalloc_permutation(numbering->length); CHKERRN(0);
	for (i=0;i<numbering->length;i++) {
		iperm->perm[i] = i;
		perm->perm[i] = numbering->numbers[i];
	}
	BSheap_sort1(perm->length,perm->perm,iperm->perm); CHKERRN(0);
	BSperm2iperm(iperm,perm); CHKERRN(0);
	BSfree_permutation(iperm); CHKERRN(0);

	return(perm);
}


syntax highlighted by Code2HTML, v. 0.9.1