Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
|
|
@ -0,0 +1,59 @@
|
|||
#lang QB64
|
||||
'***************************************************
|
||||
'* BeadSort is VERY fast for small CGSortLibArray(max)-CGSortLibArray(min). Typical performance is
|
||||
'* O(NlogN) or better. However as the key values (array values and ranges) go up, the performance
|
||||
'* drops steeply excellent for small-ranged arrays. Integer only at this point. Throughput is
|
||||
'* roughly 900k/GHzS for double-precision, with binary range (0,1). Related to CountingSort()
|
||||
'***************************************************
|
||||
SUB BeadSort (CGSortLibArray() AS DOUBLE, start AS LONG, finish AS LONG, order&)
|
||||
DIM MAX AS DOUBLE: MAX = CGSortLibArray(start)
|
||||
DIM BeadSort_Sum AS DOUBLE
|
||||
DIM BeadSort_I AS LONG
|
||||
DIM BeadSort_J AS LONG
|
||||
FOR BeadSort_I = start + 1 TO (finish - start)
|
||||
IF (CGSortLibArray(BeadSort_I) > MAX) THEN MAX = CGSortLibArray(BeadSort_I)
|
||||
NEXT
|
||||
REDIM beads((finish - start), MAX)
|
||||
FOR BeadSort_I = 0 TO (finish - start) - 1
|
||||
FOR BeadSort_J = 0 TO CGSortLibArray(BeadSort_I) - 1
|
||||
beads(BeadSort_I, BeadSort_J) = 1
|
||||
NEXT
|
||||
NEXT
|
||||
IF order& = 1 THEN
|
||||
FOR BeadSort_J = 0 TO MAX
|
||||
BeadSort_Sum = 0
|
||||
FOR BeadSort_I = 0 TO (finish - start)
|
||||
BeadSort_Sum = BeadSort_Sum + beads(BeadSort_I, BeadSort_J)
|
||||
beads(BeadSort_I, BeadSort_J) = 0
|
||||
NEXT
|
||||
FOR BeadSort_I = (finish - start) - BeadSort_Sum TO (finish - start)
|
||||
beads(BeadSort_I, BeadSort_J) = 1
|
||||
NEXT
|
||||
NEXT
|
||||
FOR BeadSort_I = 0 TO (finish - start)
|
||||
BeadSort_J = 0
|
||||
WHILE BeadSort_J < MAX AND beads(BeadSort_I, BeadSort_J)
|
||||
BeadSort_J = BeadSort_J + 1
|
||||
WEND
|
||||
CGSortLibArray(BeadSort_I) = BeadSort_J
|
||||
NEXT
|
||||
ELSE
|
||||
FOR BeadSort_J = MAX TO 0 STEP -1
|
||||
BeadSort_Sum = 0
|
||||
FOR I = 0 TO (finish - start)
|
||||
BeadSort_Sum = BeadSort_Sum + beads(I, BeadSort_J)
|
||||
beads(I, BeadSort_J) = 0
|
||||
NEXT
|
||||
FOR I = (finish - start) TO (finish - start) - BeadSort_Sum STEP -1
|
||||
beads(I, BeadSort_J) = 1
|
||||
NEXT
|
||||
NEXT
|
||||
FOR BeadSort_I = 0 TO (finish - start)
|
||||
BeadSort_J = 0
|
||||
WHILE BeadSort_J < MAX AND beads(BeadSort_I, BeadSort_J)
|
||||
BeadSort_J = BeadSort_J + 1
|
||||
WEND
|
||||
CGSortLibArray(finish - BeadSort_I) = BeadSort_J
|
||||
NEXT
|
||||
END IF
|
||||
END SUB
|
||||
Loading…
Add table
Add a link
Reference in a new issue