Data update
This commit is contained in:
parent
29a5eea0d4
commit
5c1bb7bfa9
2011 changed files with 35081 additions and 3229 deletions
|
|
@ -0,0 +1,75 @@
|
|||
' Sorting algorithms/Quicksort
|
||||
PROGRAM "quicksort"
|
||||
VERSION "1.0"
|
||||
|
||||
IMPORT "xst"
|
||||
|
||||
DECLARE FUNCTION Entry ()
|
||||
DECLARE FUNCTION QuickSort (@arr%[], l%%, r%%)
|
||||
' Pseudo-random number generator
|
||||
' Based on the rand, srand functions from Kernighan & Ritchie's book
|
||||
' 'The C Programming Language'
|
||||
DECLARE FUNCTION Rand()
|
||||
DECLARE FUNCTION SRand(seed%%)
|
||||
|
||||
FUNCTION Entry ()
|
||||
DIM arr%[19]
|
||||
a%% = 0
|
||||
b%% = UBOUND(arr%[])
|
||||
XstGetSystemTime (@msec)
|
||||
SRand(INT(msec) MOD 32768)
|
||||
FOR i%% = a%% TO b%%
|
||||
arr%[i%%] = INT(Rand() / 32768.0 * 99.0)
|
||||
NEXT i%%
|
||||
PRINT "Unsorted:"
|
||||
FOR i%% = a%% TO b%%
|
||||
PRINT FORMAT$("## ", arr%[i%%]);
|
||||
NEXT i%%
|
||||
PRINT
|
||||
PRINT "Sorted:"
|
||||
QuickSort(@arr%[], a%%, b%%)
|
||||
FOR i%% = a%% TO b%%
|
||||
PRINT FORMAT$("## ", arr%[i%%]);
|
||||
NEXT i%%
|
||||
PRINT
|
||||
END FUNCTION
|
||||
|
||||
FUNCTION QuickSort (@arr%[], l%%, r%%)
|
||||
leftIndex%% = l%%
|
||||
rightIndex%% = r%%
|
||||
IF r%% > l%% THEN
|
||||
pivot%% = (l%% + r%%) \ 2
|
||||
DO WHILE (leftIndex%% <= pivot%%) AND (rightIndex%% >= pivot%%)
|
||||
DO WHILE (arr%[leftIndex%%] < arr%[pivot%%]) AND (leftIndex%% <= pivot%%)
|
||||
INC leftIndex%%
|
||||
LOOP
|
||||
DO WHILE (arr%[rightIndex%%] > arr%[pivot%%]) AND (rightIndex%% >= pivot%%)
|
||||
DEC rightIndex%%
|
||||
LOOP
|
||||
SWAP arr%[leftIndex%%], arr%[rightIndex%%]
|
||||
INC leftIndex%%
|
||||
DEC rightIndex%%
|
||||
SELECT CASE TRUE
|
||||
CASE leftIndex%% - 1 = pivot%%:
|
||||
INC rightIndex%%
|
||||
pivot%% = rightIndex%%
|
||||
CASE rightIndex%% + 1 = pivot%%:
|
||||
DEC leftIndex%%
|
||||
pivot%% = leftIndex%%
|
||||
END SELECT
|
||||
LOOP
|
||||
QuickSort (@arr%[], l%%, pivot%% - 1)
|
||||
QuickSort (@arr%[], pivot%% + 1, r%%)
|
||||
END IF
|
||||
END FUNCTION
|
||||
|
||||
' Return pseudo-random integer on 0..32767
|
||||
FUNCTION Rand()
|
||||
#next&& = #next&& * 1103515245 + 12345
|
||||
END FUNCTION USHORT(#next&& / 65536) MOD 32768
|
||||
|
||||
' Set seed for Rand()
|
||||
FUNCTION SRand(seed%%)
|
||||
#next&& = seed%%
|
||||
END FUNCTION
|
||||
END PROGRAM
|
||||
Loading…
Add table
Add a link
Reference in a new issue