Sorting algorithms/Insertion sort: Difference between revisions

Content added Content deleted
(→‎{{header|REXX}}: removed superflous blanks, added comments, restructed DO loops. -- ~~~~)
Line 1,536: Line 1,536:


=={{header|REXX}}==
=={{header|REXX}}==
<lang rexx>
<lang rexx>/*REXX program sorts an array using the insertion-sort method. */

call gen@ /*generate array elements. */
call show@ 'before sort' /*show before array elements*/
call insertionSort highItem /*invoke the insertion sort.*/
call show@ ' after sort' /*show after array elements*/
exit


/*─────────────────────────────────────INSERTIONSORT 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
jp1=j+1
@.jp1=@.j
end

jp1=j+1
@.jp1=value
end

return


/*─────────────────────────────────────GEN@ subroutine─────────────*/
gen@: @.='' /*assign default value. */

@.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. */
end

highItem=highItem-1 /*adjust highItem slightly. */
return


/*─────────────────────────────────────SHOW@ subroutine────────────*/
show@: widthH=length(highItem) /*maximum width of any line.*/

do j=1 for highItem
say 'element' right(j,widthH) arg(1)':' @.j
end

say copies('─',80) /*show a seperator line. */
return</lang>
return</lang>