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)12BSpermutation *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