Sorting algorithms/Insertion sort: Difference between revisions
Content added Content deleted
(→{{header|REXX}}: removed superflous blanks, added comments, restructed DO loops. -- ~~~~) |
(→{{header|REXX}}: restructured the body of the REXX program. -- ~~~~) |
||
Line 1,536: | Line 1,536: | ||
=={{header|REXX}}== |
=={{header|REXX}}== |
||
<lang rexx>/*REXX program sorts an array using the insertion-sort method. */ |
|||
<lang rexx> |
|||
call gen@ /*generate the array's elements. */ |
|||
⚫ | |||
call show@ 'before sort' /*show the before array elements.*/ |
|||
call insertionSort highItem /*invoke the insertion sort. */ |
|||
call show@ ' after sort' /*show the after array elements.*/ |
|||
exit |
|||
/*─────────────────────────────────────INSERTIONSORT subroutine─────────*/ |
|||
insertionSort: procedure expose @.; parse arg highItem |
|||
do i=2 to highItem; value=@.i |
|||
Output: |
|||
do j=i-1 by -1 while j\==0 & @.j>value |
|||
jp=j+1; @.jp=@.j |
|||
end /*j*/ |
|||
jp=j+1 |
|||
@.jp=value |
|||
end /*i*/ |
|||
return |
|||
/*─────────────────────────────────────GEN@ subroutine──────────────────*/ |
|||
gen@: @.='' /*assign default value to array. */ |
|||
@.1="---Monday's Child Is Fair of Face (by Mother Goose)---" |
|||
@.2="Monday's child is fair of face;" |
|||
@.3="Tuesday's child is full of grace;" |
|||
@.4="Wednesday's child is full of woe;" |
|||
@.5="Thursday's child has far to go;" |
|||
@.6="Friday's child is loving and giving;" |
|||
@.7="Saturday's child works hard for a living;" |
|||
@.8="But the child that is born on the Sabbath day" |
|||
@.9="Is blithe and bonny, good and gay." |
|||
do highItem=1 while @.highItem\=='' /*find how many entries in array.*/ |
|||
end /*short and sweet DO loop, eh? */ |
|||
highItem=highItem-1 /*because of DO, adjust highItem.*/ |
|||
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 seperator line that fits*/ |
|||
⚫ | |||
'''output''' |
|||
<pre style="height:45ex;overflow:scroll"> |
|||
element 1 before sort: ---Monday's Child Is Fair of Face (by Mother Goose)--- |
element 1 before sort: ---Monday's Child Is Fair of Face (by Mother Goose)--- |
||
element 2 before sort: Monday's child is fair of face; |
element 2 before sort: Monday's child is fair of face; |
||
Line 1,550: | Line 1,587: | ||
element 9 before sort: Is blithe and bonny, good and gay. |
element 9 before sort: Is blithe and bonny, good and gay. |
||
──────────────────────────────────────────────────────────────────────────────── |
──────────────────────────────────────────────────────────────────────────────── |
||
element 1 after sort: ---Monday's Child Is Fair of Face (by Mother Goose)--- |
element 1 after sort: ---Monday's Child Is Fair of Face (by Mother Goose)--- |
||
element 2 after sort: But the child that is born on the Sabbath day |
element 2 after sort: But the child that is born on the Sabbath day |
||
Line 1,561: | Line 1,597: | ||
element 9 after sort: Wednesday's child is full of woe; |
element 9 after sort: Wednesday's child is full of woe; |
||
──────────────────────────────────────────────────────────────────────────────── |
──────────────────────────────────────────────────────────────────────────────── |
||
</pre> |
|||
=={{header|Ruby}}== |
=={{header|Ruby}}== |