Sorting algorithms/Bubble sort: Difference between revisions
Content added Content deleted
PatGarrett (talk | contribs) |
m (→{{header|REXX}}: changed some comments and added whitespace.) |
||
Line 3,070: | Line 3,070: | ||
=={{header|REXX}}== |
=={{header|REXX}}== |
||
<lang rexx>/*REXX program sorts an array using the bubble-sort |
<lang rexx>/*REXX program sorts an array using the bubble-sort algorithm. */ |
||
call gen@ /*generate the array elements. */ |
call gen@ /*generate the array elements. */ |
||
call show@ 'before sort' /*show the before array elements.*/ |
call show@ 'before sort' /*show the before array elements.*/ |
||
Line 3,078: | Line 3,077: | ||
exit /*stick a fork in it, we're done.*/ |
exit /*stick a fork in it, we're done.*/ |
||
/*──────────────────────────────────BUBBLESORT subroutine───────────────*/ |
/*──────────────────────────────────BUBBLESORT subroutine───────────────*/ |
||
bubbleSort: procedure expose @.; parse arg n /* |
bubbleSort: procedure expose @.; parse arg n /*N: number of items.*/ |
||
/*diminish # items each time. */ |
/*diminish # items each time. */ |
||
do until done |
do until done /*sort until it's done. */ |
||
done=1 /*assume it's done (1 |
done=1 /*assume it's done (1 ≡ true). */ |
||
do j=1 for n-1 |
do j=1 for n-1 /*sort M items this time around. */ |
||
k=j+1 /*point to the next item. */ |
k=j+1 /*point to the next item. */ |
||
if @.j>@.k then do /*is it out of order |
if @.j>@.k then do /*is it out of order? */ |
||
_=@.j /*assign to a temp variable. */ |
_=@.j /*assign to a temp variable. */ |
||
@.j=@.k /*swap current with next. */ |
@.j=@.k /*swap current with next. */ |
||
@.k=_ /* |
@.k=_ /*··· and next with _ */ |
||
done=0 /*indicate it's not done |
done=0 /*indicate it's not done, */ |
||
end /* 1=true 0=false |
end /* 1=true 0=false */ |
||
end /*j*/ |
end /*j*/ |
||
end /*until done*/ |
end /*until done*/ |
||
return |
return |
||
/*──────────────────────────────────GEN@ subroutine─────────────────────*/ |
/*──────────────────────────────────GEN@ subroutine─────────────────────*/ |
||
gen@: @.= /*assign |
gen@: @.= /*assign default value to all @. */ |
||
@.1 ='---letters of the Hebrew alphabet---' ; @.13='kaph [kaf]' |
@.1 ='---letters of the Hebrew alphabet---' ; @.13='kaph [kaf]' |
||
@.2 ='====================================' ; @.14='lamed' |
@.2 ='====================================' ; @.14='lamed' |
||
Line 3,108: | Line 3,107: | ||
@.12='yod' ; @.24='taw [tav]' |
@.12='yod' ; @.24='taw [tav]' |
||
do highItem=1 while @.highItem\=='' |
do highItem=1 while @.highItem\=='' /*find how many entries in list. */ |
||
end /*highitem*/ |
end /*highitem*/ |
||
highItem=highItem-1 /*adjust |
highItem=highItem-1 /*adjust because of DO increment.*/ |
||
return |
return |
||
/*──────────────────────────────────SHOW@ subroutine────────────────────*/ |
/*──────────────────────────────────SHOW@ subroutine────────────────────*/ |
||
show@: widthH=length(highItem) /*maximum width of any line. */ |
show@: widthH=length(highItem) /*maximum width of any line. */ |
||
do j=1 for highItem |
do j=1 for highItem |
||
say 'element' right(j,widthH) arg(1)':' @.j |
say 'element' right(j,widthH) arg(1)':' @.j |
||
end |
end /*j*/ |
||
say copies(' |
say copies('─',80) /*show a separator line. */ |
||
return</lang> |
return</lang> |
||
'''output''' |
'''output''' |