final class Bzip2DivSufSort
extends java.lang.Object
Modifier and Type | Class and Description |
---|---|
private static class |
Bzip2DivSufSort.PartitionResult |
private static class |
Bzip2DivSufSort.StackEntry |
private static class |
Bzip2DivSufSort.TRBudget |
Modifier and Type | Field and Description |
---|---|
private static int |
BUCKET_A_SIZE |
private static int |
BUCKET_B_SIZE |
private static int |
INSERTIONSORT_THRESHOLD |
private static int[] |
LOG_2_TABLE |
private int |
n |
private int[] |
SA |
private static int |
SS_BLOCKSIZE |
private static int |
STACK_SIZE |
private byte[] |
T |
Constructor and Description |
---|
Bzip2DivSufSort(byte[] block,
int[] bwtBlock,
int blockLength) |
Modifier and Type | Method and Description |
---|---|
private static int |
BUCKET_B(int c0,
int c1) |
private static int |
BUCKET_BSTAR(int c0,
int c1) |
int |
bwt()
Performs a Burrows Wheeler Transform on the input array.
|
private int |
constructBWT(int[] bucketA,
int[] bucketB) |
private static int |
getIDX(int a) |
private void |
lsIntroSort(int isa,
int isaD,
int isaN,
int first,
int last) |
private void |
lsSort(int isa,
int n,
int depth) |
private void |
lsUpdateGroup(int isa,
int first,
int last) |
private int |
sortTypeBstar(int[] bucketA,
int[] bucketB) |
private static void |
ssBlockSwap(int[] array1,
int first1,
int[] array2,
int first2,
int size) |
private int |
ssCompare(int p1,
int p2,
int depth) |
private int |
ssCompareLast(int pa,
int p1,
int p2,
int depth,
int size) |
private void |
ssFixdown(int td,
int pa,
int sa,
int i,
int size) |
private void |
ssHeapSort(int td,
int pa,
int sa,
int size) |
private void |
ssInsertionSort(int pa,
int first,
int last,
int depth) |
private static int |
ssLog(int n) |
private int |
ssMedian3(int td,
int pa,
int v1,
int v2,
int v3) |
private int |
ssMedian5(int td,
int pa,
int v1,
int v2,
int v3,
int v4,
int v5) |
private void |
ssMerge(int pa,
int first,
int middle,
int last,
int[] buf,
int bufoffset,
int bufsize,
int depth) |
private void |
ssMergeBackward(int pa,
int[] buf,
int bufoffset,
int first,
int middle,
int last,
int depth) |
private void |
ssMergeCheckEqual(int pa,
int depth,
int a) |
private void |
ssMergeForward(int pa,
int[] buf,
int bufoffset,
int first,
int middle,
int last,
int depth) |
private void |
ssMultiKeyIntroSort(int pa,
int first,
int last,
int depth) |
private int |
ssPivot(int td,
int pa,
int first,
int last) |
private int |
ssSubstringPartition(int pa,
int first,
int last,
int depth) |
private void |
subStringSort(int pa,
int first,
int last,
int[] buf,
int bufoffset,
int bufsize,
int depth,
boolean lastsuffix,
int size) |
private static void |
swapElements(int[] array1,
int idx1,
int[] array2,
int idx2) |
private void |
trCopy(int isa,
int isaN,
int first,
int a,
int b,
int last,
int depth) |
private void |
trFixdown(int isa,
int isaD,
int isaN,
int sa,
int i,
int size) |
private int |
trGetC(int isa,
int isaD,
int isaN,
int p) |
private void |
trHeapSort(int isa,
int isaD,
int isaN,
int sa,
int size) |
private void |
trInsertionSort(int isa,
int isaD,
int isaN,
int first,
int last) |
private void |
trIntroSort(int isa,
int isaD,
int isaN,
int first,
int last,
Bzip2DivSufSort.TRBudget budget,
int size) |
private static int |
trLog(int n) |
private int |
trMedian3(int isa,
int isaD,
int isaN,
int v1,
int v2,
int v3) |
private int |
trMedian5(int isa,
int isaD,
int isaN,
int v1,
int v2,
int v3,
int v4,
int v5) |
private Bzip2DivSufSort.PartitionResult |
trPartition(int isa,
int isaD,
int isaN,
int first,
int last,
int v) |
private int |
trPivot(int isa,
int isaD,
int isaN,
int first,
int last) |
private void |
trSort(int isa,
int n,
int depth) |
private static final int STACK_SIZE
private static final int BUCKET_A_SIZE
private static final int BUCKET_B_SIZE
private static final int SS_BLOCKSIZE
private static final int INSERTIONSORT_THRESHOLD
private static final int[] LOG_2_TABLE
private final int[] SA
private final byte[] T
private final int n
Bzip2DivSufSort(byte[] block, int[] bwtBlock, int blockLength)
block
- The input arraybwtBlock
- The output arrayblockLength
- The length of the input dataprivate static void swapElements(int[] array1, int idx1, int[] array2, int idx2)
private int ssCompare(int p1, int p2, int depth)
private int ssCompareLast(int pa, int p1, int p2, int depth, int size)
private void ssInsertionSort(int pa, int first, int last, int depth)
private void ssFixdown(int td, int pa, int sa, int i, int size)
private void ssHeapSort(int td, int pa, int sa, int size)
private int ssMedian3(int td, int pa, int v1, int v2, int v3)
private int ssMedian5(int td, int pa, int v1, int v2, int v3, int v4, int v5)
private int ssPivot(int td, int pa, int first, int last)
private static int ssLog(int n)
private int ssSubstringPartition(int pa, int first, int last, int depth)
private void ssMultiKeyIntroSort(int pa, int first, int last, int depth)
private static void ssBlockSwap(int[] array1, int first1, int[] array2, int first2, int size)
private void ssMergeForward(int pa, int[] buf, int bufoffset, int first, int middle, int last, int depth)
private void ssMergeBackward(int pa, int[] buf, int bufoffset, int first, int middle, int last, int depth)
private static int getIDX(int a)
private void ssMergeCheckEqual(int pa, int depth, int a)
private void ssMerge(int pa, int first, int middle, int last, int[] buf, int bufoffset, int bufsize, int depth)
private void subStringSort(int pa, int first, int last, int[] buf, int bufoffset, int bufsize, int depth, boolean lastsuffix, int size)
private int trGetC(int isa, int isaD, int isaN, int p)
private void trFixdown(int isa, int isaD, int isaN, int sa, int i, int size)
private void trHeapSort(int isa, int isaD, int isaN, int sa, int size)
private void trInsertionSort(int isa, int isaD, int isaN, int first, int last)
private static int trLog(int n)
private int trMedian3(int isa, int isaD, int isaN, int v1, int v2, int v3)
private int trMedian5(int isa, int isaD, int isaN, int v1, int v2, int v3, int v4, int v5)
private int trPivot(int isa, int isaD, int isaN, int first, int last)
private void lsUpdateGroup(int isa, int first, int last)
private void lsIntroSort(int isa, int isaD, int isaN, int first, int last)
private void lsSort(int isa, int n, int depth)
private Bzip2DivSufSort.PartitionResult trPartition(int isa, int isaD, int isaN, int first, int last, int v)
private void trCopy(int isa, int isaN, int first, int a, int b, int last, int depth)
private void trIntroSort(int isa, int isaD, int isaN, int first, int last, Bzip2DivSufSort.TRBudget budget, int size)
private void trSort(int isa, int n, int depth)
private static int BUCKET_B(int c0, int c1)
private static int BUCKET_BSTAR(int c0, int c1)
private int sortTypeBstar(int[] bucketA, int[] bucketB)
private int constructBWT(int[] bucketA, int[] bucketB)
public int bwt()