natix.SimilaritySearch.KnrSeqSearch.GetSortedByPrefix C# (CSharp) Method

GetSortedByPrefix() public method

public GetSortedByPrefix ( SequenceBuilder seq_builder = null, ListIBuilder list_builder = null ) : KnrSeqSearch
seq_builder SequenceBuilder
list_builder ListIBuilder
return KnrSeqSearch
        public KnrSeqSearch GetSortedByPrefix(SequenceBuilder seq_builder = null, ListIBuilder list_builder = null)
        {
            int n = this.DB.Count;
            var seqs = new int[n][];
            var perm = new int[n];
            for (int i = 0; i < n; ++i) {
                seqs [i] = this.GetStoredKnr (i);
                perm [i] = i;
            }
            // please speed up this method using another sorting method
            // Sorting.Sort<int> (perm, (x,y) => StringSpace<int>.LexicographicCompare (seqs [x], seqs [y]));
            Sorting.Sort<int[],int> (seqs, perm, (x,y) => SeqSpace<int>.LexicographicCompare (x, y));
            var S = new ListGen<int> ((int i) => seqs [i / this.K] [i % this.K], n * this.K);
            if (list_builder == null) {
                list_builder = ListIBuilders.GetListIFS();
            }
            if (seq_builder == null) {
                seq_builder = SequenceBuilders.GetSeqXLB_DiffSet64(24, 63);
            }
            var knr = new KnrSeqSearch();
            knr.DB = new SampleSpace("", this.DB, list_builder(perm, n-1));
            knr.K = this.K;
            knr.MAXCAND = this.MAXCAND;
            knr.R = this.R;
            knr.SEQ = seq_builder(S, this.R.DB.Count);
            return knr;
        }