Sorting algorithms/Insertion sort: Difference between revisions

→‎{{header|REXX}}: changed DO loop indentations, changed comments, added comments, changed fence, re-order subroutines in alphbetical order. -- ~~~~
m (adding maxima)
(→‎{{header|REXX}}: changed DO loop indentations, changed comments, added comments, changed fence, re-order subroutines in alphbetical order. -- ~~~~)
Line 1,552:
 
=={{header|REXX}}==
<lang rexx>/*REXX program sorts ana stemmed array using the insertion-sort method. */
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.*/
gen@:exit @.='' /*assignstick defaulta valuefork toin array.it, we're done.*/
exit
/*──────────────────────────────────GEN@ subroutine─────────────────────*/
/*─────────────────────────────────────INSERTIONSORT subroutine─────────*/
gen@: @.= end /*jassign default value to array. */
insertionSort: procedure expose @.; parse arg highItem
@.1 = "---Monday's Child Is Fair of Face (by Mother Goose)---"
 
@.2 = "Monday's child is fair of face;"
do i=2 to highItem; value=@.i
@.3 = "Tuesday's child is full of grace;"
do j=i-1 by -1 while j\==0 & @.j>value
@.4 = "Wednesday's child is full of woe;"
jp=j+1; @.jp=@.j
@.5 = "Thursday's child has far to go;"
end /*j*/
@.6 = "Friday's child is loving and giving;"
jp=j+1
@.7 = "Saturday's child works hard for a living;"
@.jp=value
@.8 = "But the child that is born on the Sabbath day"
end /*i*/
@.9 = "Is blithe and bonny, good and gay."
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
/*──────────────────────────────────INSERTIONSORT subroutine────────────*/
/*─────────────────────────────────────SHOW@ subroutine─────────────────*/
insertionSort: procedure expose @.; parse arg highItem
do i=2 to highItem; value=@.i
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
/*──────────────────────────────────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 /*j*/
say copies('─',79) /*show a separatorseperator line that fits*/
return</lang>
'''output'''
<pre style="height:45ex40ex;overflow:scroll">
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 3 before sort: Tuesday's child is full of grace;
element 4 before sort: Wednesday's child is full of woe;
element 5 before sort: Thursday's child has far to go;
element 6 before sort: Friday's child is loving and giving;
element 7 before sort: Saturday's child works hard for a living;
element 8 before sort: But the child that is born on the Sabbath day
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 2 after sort: But the child that is born on the Sabbath day
element 3 after sort: Friday's child is loving and giving;
element 4 after sort: Is blithe and bonny, good and gay.
element 5 after sort: Monday's child is fair of face;
element 6 after sort: Saturday's child works hard for a living;
element 7 after sort: Thursday's child has far to go;
element 8 after sort: Tuesday's child is full of grace;
element 9 after sort: Wednesday's child is full of woe;
───────────────────────────────────────────────────────────────────────────────
────────────────────────────────────────────────────────────────────────────────
</pre>