Just another update
This commit is contained in:
parent
a25938f123
commit
00a190b0a6
6591 changed files with 94363 additions and 23227 deletions
|
|
@ -1,44 +1,36 @@
|
|||
/*REXX program sorts an array using the comb-sort method. */
|
||||
call gen@ /*generate the array elements. */
|
||||
call show@ 'before sort' /*show the before array elements.*/
|
||||
call combSort highItem /*invoke the comb sort. */
|
||||
call show@ ' after sort' /*show the after array elements.*/
|
||||
/*REXX program sorts a stemmed array using the comb-sort algorithm. */
|
||||
call gen@; w=length(#) /*generate the array elements. */
|
||||
call show@ 'before sort' /*show the before array elements.*/
|
||||
call combSort # /*invoke the comb sort. */
|
||||
call show@ ' after sort' /*show the after array elements.*/
|
||||
exit /*stick a fork in it, we're done.*/
|
||||
/*──────────────────────────────────COMBSORT subroutine─────────────────*/
|
||||
combSort: procedure expose @.; parse arg n
|
||||
s=n-1 /*S = spread between COMBs. */
|
||||
|
||||
do until s<=1 & done
|
||||
s=trunc(s*.8) /* ÷ is slow, * is better. */
|
||||
done=1
|
||||
do j=1 until j+s>=n
|
||||
jps=j+s
|
||||
if @.j>@.jps then do; _=@.j; @.j=@.jps; @.jps=_; done=0; end
|
||||
end /*j*/
|
||||
end /*until*/
|
||||
|
||||
combSort: procedure expose @.; parse arg N /*N: is number of elements.*/
|
||||
s=N-1 /*S: is the spread between COMBs.*/
|
||||
do until s<=1 & done; done=1 /*assume sort is done (so far). */
|
||||
s=trunc(s*.8) /* ÷ is slow, * is better.*/
|
||||
do j=1 until js>=N; js=j+s
|
||||
if @.j>@.js then do; _=@.j; @.j=@.js; @.js=_; done=0; end
|
||||
end /*j*/
|
||||
end /*until*/
|
||||
return
|
||||
/*──────────────────────────────────GEN@ subroutine─────────────────────*/
|
||||
gen@: @.= /*assign the default value. */
|
||||
@.1 ='--- polygon sides'
|
||||
@.2 ='============== ====='
|
||||
@.3 ='triangle 3'
|
||||
@.4 ='quadrilateral 4'
|
||||
@.5 ='pentagon 5'
|
||||
@.6 ='hexagon 6'
|
||||
@.7 ='heptagon 7'
|
||||
@.8 ='octagon 8'
|
||||
@.9 ='nonagon 9'
|
||||
@.10='decagon 10'
|
||||
@.11='dodecagon 12'
|
||||
do highItem=1 while @.highItem\=='' /*find how many entries in array.*/
|
||||
end
|
||||
highItem=highItem-1 /*adjust highItem slightly. */
|
||||
gen@: @. = ; @.12 = 'dodecagon 12'
|
||||
@.1 = '----polygon--- sides' ; @.13 = 'tridecagon 13'
|
||||
@.2 = '============== =======' ; @.14 = 'tetradecagon 14'
|
||||
@.3 = 'triangle 3' ; @.15 = 'pentadecagon 15'
|
||||
@.4 = 'quadrilateral 4' ; @.16 = 'hexadecagon 16'
|
||||
@.5 = 'pentagon 5' ; @.17 = 'heptadecagon 17'
|
||||
@.6 = 'hexagon 6' ; @.18 = 'octadecagon 18'
|
||||
@.7 = 'heptagon 7' ; @.19 = 'enneadecagon 19'
|
||||
@.8 = 'octagon 8' ; @.20 = 'icosagon 20'
|
||||
@.9 = 'nonagon 9' ; @.21 = 'hectogon 100'
|
||||
@.10 = 'decagon 10' ; @.22 = 'chiliagon 1000'
|
||||
@.11 = 'hendecagon 11' ; @.23 = 'myriagon 10000'
|
||||
do #=1 while @.#\==''; end; #=#-1 /*find how many entries in array.*/
|
||||
return
|
||||
/*──────────────────────────────────SHOW@ subroutine────────────────────*/
|
||||
show@: widthH=length(highItem) /*the maximum width of any line. */
|
||||
do j=1 for highItem
|
||||
say 'element' right(j,widthH) arg(1)":" @.j
|
||||
end
|
||||
say copies('─',79) /*show a nice separator line. */
|
||||
show@: say copies('▒',60); do j=1 for # /*display array elements.*/
|
||||
say ' element' right(j,w) arg(1)":" @.j
|
||||
end /*j*/
|
||||
return
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue