BuildSort.c  geneid v 1.1 source documentation 
Description: 
Given one exon, the main goal is to find the best gene finished in that
exon (dynamic programming), looking for every exon which may be placed before
it, according to the assembling rules expressed
in the gene model, and selecting the best one (higher gene
score). Given a rule or gene class, the set of exons that may be used
at the left part of the rule are stored, sorted by donor (right) position,
in the darray structure (plus extra array of counters). This module sorts
by donor the input exons according to every class rules and the type of exons.
As the set of input exons were initially ordered by acceptor, donor
rearrangements are very similar and preserves quite well the original order.

Briefing: 
void BuildSort(dict* D, int nc[], int ne[], int UC[][MAXENTRY], int DE[][MAXENTRY], int nclass, long km[], exonGFF* **d, exonGFF* E, long nexons) 
Essentially, for every exon and the set of available rules or classes (in which
its type is at the left part): to insert into the sorting function by
running the sorting algorithm by insertion.
(Note: As input exons are sorted by acceptor
and this order is partially maintained in the arrangement by
donor, there will be many simple insertion operations and few operations
of shifting in the darrays (linear time cost)).

Enrique Blanco Garcia © 2001