Sort stability: Difference between revisions

Content added Content deleted
m (→‎{{header|REXX}}: added an EXIT code.)
m (→‎{{header|REXX}}: added whitespace.)
Line 1,499: Line 1,499:
call bubbleSort # /*invoke the bubble sort. */
call bubbleSort # /*invoke the bubble sort. */
call show ' after sort' /*show the after array elements. */
call show ' after sort' /*show the after array elements. */
exit 0 /*stick a fork in it, we're all done. */
exit 0 /*stick a fork in it, we're all done. */
/*──────────────────────────────────────────────────────────────────────────────────────*/
/*──────────────────────────────────────────────────────────────────────────────────────*/
bubbleSort: procedure expose @.; parse arg n; m= n-1 /*N: number of array elements. */
bubbleSort: procedure expose @.; parse arg n; m= n-1 /*N: number of array elements. */
do m=m for m by -1 until ok; ok= 1 /*keep sorting array until done.*/
do m=m for m by -1 until ok; ok= 1 /*keep sorting array until done.*/
do j=1 for m; k=j+1; if @.j<=@.k then iterate /*Not out─of─order?*/
do j=1 for m; k= j+1; if @.j<=@.k then iterate /*Not out─of─order?*/
_=@.j; @.j=@.k; @.k=_ ok= 0 /*swap 2 elements; flag as ¬done*/
_= @.j; @.j= @.k; @.k= _ ok= 0 /*swap 2 elements; flag as ¬done*/
end /*j*/
end /*j*/
end /*m*/; return
end /*m*/; return