1 #include "BSprivate.h"
2 
3 /*+ BSglobal_perm - Find a permutation based on a numbering
4 
5     Input Parameters:
6 .   numbering - the numbering to find a permutation for
7 
8     Returns:
9     the permutation that will put the numbering into sorted order
10 
11 +*/
BSglobal_perm(BSnumbering * numbering)12 BSpermutation *BSglobal_perm(BSnumbering *numbering)
13 {
14 	BSpermutation *perm, *iperm;
15 	int	i;
16 
17 	perm = BSalloc_permutation(numbering->length); CHKERRN(0);
18 	iperm = BSalloc_permutation(numbering->length); CHKERRN(0);
19 	for (i=0;i<numbering->length;i++) {
20 		iperm->perm[i] = i;
21 		perm->perm[i] = numbering->numbers[i];
22 	}
23 	BSheap_sort1(perm->length,perm->perm,iperm->perm); CHKERRN(0);
24 	BSperm2iperm(iperm,perm); CHKERRN(0);
25 	BSfree_permutation(iperm); CHKERRN(0);
26 
27 	return(perm);
28 }
29