all tasks
This commit is contained in:
parent
b83f433714
commit
68f8f3e56b
14735 changed files with 178959 additions and 0 deletions
|
|
@ -0,0 +1,50 @@
|
|||
DECLARE SUB quicksort (arr() AS INTEGER, leftN AS INTEGER, rightN AS INTEGER)
|
||||
|
||||
DIM q(99) AS INTEGER
|
||||
DIM n AS INTEGER
|
||||
|
||||
RANDOMIZE TIMER
|
||||
|
||||
FOR n = 0 TO 99
|
||||
q(n) = INT(RND * 9999)
|
||||
NEXT
|
||||
|
||||
OPEN "output.txt" FOR OUTPUT AS 1
|
||||
FOR n = 0 TO 99
|
||||
PRINT #1, q(n),
|
||||
NEXT
|
||||
PRINT #1,
|
||||
quicksort q(), 0, 99
|
||||
FOR n = 0 TO 99
|
||||
PRINT #1, q(n),
|
||||
NEXT
|
||||
CLOSE
|
||||
|
||||
SUB quicksort (arr() AS INTEGER, leftN AS INTEGER, rightN AS INTEGER)
|
||||
DIM pivot AS INTEGER, leftNIdx AS INTEGER, rightNIdx AS INTEGER
|
||||
leftNIdx = leftN
|
||||
rightNIdx = rightN
|
||||
IF (rightN - leftN) > 0 THEN
|
||||
pivot = (leftN + rightN) / 2
|
||||
WHILE (leftNIdx <= pivot) AND (rightNIdx >= pivot)
|
||||
WHILE (arr(leftNIdx) < arr(pivot)) AND (leftNIdx <= pivot)
|
||||
leftNIdx = leftNIdx + 1
|
||||
WEND
|
||||
WHILE (arr(rightNIdx) > arr(pivot)) AND (rightNIdx >= pivot)
|
||||
rightNIdx = rightNIdx - 1
|
||||
WEND
|
||||
SWAP arr(leftNIdx), arr(rightNIdx)
|
||||
leftNIdx = leftNIdx + 1
|
||||
rightNIdx = rightNIdx - 1
|
||||
IF (leftNIdx - 1) = pivot THEN
|
||||
rightNIdx = rightNIdx + 1
|
||||
pivot = rightNIdx
|
||||
ELSEIF (rightNIdx + 1) = pivot THEN
|
||||
leftNIdx = leftNIdx - 1
|
||||
pivot = leftNIdx
|
||||
END IF
|
||||
WEND
|
||||
quicksort arr(), leftN, pivot - 1
|
||||
quicksort arr(), pivot + 1, rightN
|
||||
END IF
|
||||
END SUB
|
||||
Loading…
Add table
Add a link
Reference in a new issue