Sorting algorithms/Gnome sort: Difference between revisions

→‎{{header|AWK}}: Added AWK version.
(Add ooRexx implementation)
(→‎{{header|AWK}}: Added AWK version.)
Line 153:
sorted .= "," . a%A_Index%
Return SubStr(sorted,2) ; drop leading comma
}</lang>
 
=={{header|AWK}}==
 
AWK arrays can be passed as parameters, but not returned, so they are usually global.
 
<lang awk>#!/usr/bin/awk -f
 
BEGIN {
d[1] = 3.0
d[2] = 4.0
d[3] = 1.0
d[4] = -8.4
d[5] = 7.2
d[6] = 4.0
d[7] = 1.0
d[8] = 1.2
showD("Before: ")
gnomeSortD()
showD("Sorted: ")
exit
}
 
function gnomeSortD( i) {
for (i = 2; i <= length(d); i++) {
if (d[i] < d[i-1]) gnomeSortBackD(i)
}
}
 
function gnomeSortBackD(i, t) {
for (; i > 1 && d[i] < d[i-1]; i--) {
t = d[i]
d[i] = d[i-1]
d[i-1] = t
}
}
 
function showD(p, i) {
printf p
for (i = 1; i <= length(d); i++) {
printf d[i] " "
}
print ""
}
</lang>
 
Example output:
Before: 3 4 1 -8.4 7.2 4 1 1.2
Sorted: -8.4 1 1 1.2 3 4 4 7.2
 
=={{header|BASIC}}==