Add tasks for all the new languages
This commit is contained in:
parent
9dc3c2bb62
commit
bba7bfd280
13208 changed files with 134745 additions and 0 deletions
|
|
@ -0,0 +1,79 @@
|
|||
PROGRAM QUICKSORT_DEMO
|
||||
|
||||
DIM ARRAY[21]
|
||||
|
||||
!$DYNAMIC
|
||||
DIM QSTACK[0]
|
||||
|
||||
!$INCLUDE="PC.LIB"
|
||||
|
||||
PROCEDURE QSORT(ARRAY[],START,NUM)
|
||||
FIRST=START ! initialize work variables
|
||||
LAST=START+NUM-1
|
||||
LOOP
|
||||
REPEAT
|
||||
TEMP=ARRAY[(LAST+FIRST) DIV 2] ! seek midpoint
|
||||
I=FIRST
|
||||
J=LAST
|
||||
REPEAT ! reverse both < and > below to sort descending
|
||||
WHILE ARRAY[I]<TEMP DO
|
||||
I=I+1
|
||||
END WHILE
|
||||
WHILE ARRAY[J]>TEMP DO
|
||||
J=J-1
|
||||
END WHILE
|
||||
EXIT IF I>J
|
||||
IF I<J THEN SWAP(ARRAY[I],ARRAY[J]) END IF
|
||||
I=I+1
|
||||
J=J-1
|
||||
UNTIL NOT(I<=J)
|
||||
IF I<LAST THEN ! Done
|
||||
QSTACK[SP]=I ! Push I
|
||||
QSTACK[SP+1]=LAST ! Push Last
|
||||
SP=SP+2
|
||||
END IF
|
||||
LAST=J
|
||||
UNTIL NOT(FIRST<LAST)
|
||||
|
||||
EXIT IF SP=0
|
||||
SP=SP-2
|
||||
FIRST=QSTACK[SP] ! Pop First
|
||||
LAST=QSTACK[SP+1] ! Pop Last
|
||||
END LOOP
|
||||
END PROCEDURE
|
||||
|
||||
BEGIN
|
||||
RANDOMIZE(TIMER) ! generate a new series each run
|
||||
|
||||
! create an array
|
||||
FOR X=1 TO 21 DO ! fill with random numbers
|
||||
ARRAY[X]=RND(1)*500 ! between 0 and 500
|
||||
END FOR
|
||||
PRIMO=6 ! sort starting here
|
||||
NUM=10 ! sort this many elements
|
||||
CLS
|
||||
PRINT("Before Sorting:";TAB(31);"After sorting:")
|
||||
PRINT("===============";TAB(31);"==============")
|
||||
FOR X=1 TO 21 DO ! show them before sorting
|
||||
IF X>=PRIMO AND X<=PRIMO+NUM-1 THEN
|
||||
PRINT("==>";)
|
||||
END IF
|
||||
PRINT(TAB(5);)
|
||||
WRITE("###.##";ARRAY[X])
|
||||
END FOR
|
||||
|
||||
! create a stack
|
||||
!$DIM QSTACK[INT(NUM/5)+10]
|
||||
QSORT(ARRAY[],PRIMO,NUM)
|
||||
!$ERASE QSTACK
|
||||
|
||||
LOCATE(2,1)
|
||||
FOR X=1 TO 21 DO ! print them after sorting
|
||||
LOCATE(2+X,30)
|
||||
IF X>=PRIMO AND X<=PRIMO+NUM-1 THEN
|
||||
PRINT("==>";) ! point to sorted items
|
||||
END IF
|
||||
LOCATE(2+X,35)
|
||||
WRITE("###.##";ARRAY[X])
|
||||
END FOR
|
||||
END PROGRAM
|
||||
Loading…
Add table
Add a link
Reference in a new issue