Sorting algorithms/Insertion sort: Difference between revisions
Content added Content deleted
(+Stata) |
(Add language: /.ROFF/.) |
||
Line 1,831: | Line 1,831: | ||
END IntSort; |
END IntSort; |
||
END InsertSort.</lang> |
END InsertSort.</lang> |
||
=={{header|N/t/roff}}== |
|||
{{works with|GNU Troff|1.22.2}} |
|||
===Sliding method=== |
|||
<lang N/t/roff>.de end |
|||
.. |
|||
.de array |
|||
. nr \\$1.c 0 1 |
|||
. de \\$1.push end |
|||
. nr \\$1..\\\\n+[\\$1.c] \\\\$1 |
|||
. end |
|||
. de \\$1.pushln end |
|||
. if \\\\n(.$>0 .\\$1.push \\\\$1 |
|||
. if \\\\n(.$>1 \{ \ |
|||
. shift |
|||
. \\$1.pushln \\\\$@ |
|||
. \} |
|||
. end |
|||
. de \\$1.dump end |
|||
. nr i 0 1 |
|||
. ds out " |
|||
. while \\\\n+i<=\\\\n[\\$1.c] .as out "\\\\n[\\$1..\\\\ni] |
|||
. tm \\\\*[out] |
|||
. rm out |
|||
. rr i |
|||
. end |
|||
. de \\$1.slideright end |
|||
. nr i \\\\$1 |
|||
. nr i+1 \\\\ni+1 |
|||
. nr \\$1..\\\\n[i+1] \\\\n[\\$1..\\\\ni] |
|||
. rr i |
|||
. rr i+1 |
|||
. end |
|||
.. |
|||
.de insertionsort |
|||
. nr keyidx 1 1 |
|||
. while \\n+[keyidx]<=\\n[\\$1.c] \{ \ |
|||
. nr key \\n[\\$1..\\n[keyidx]] |
|||
. nr compidx \\n[keyidx] 1 |
|||
. while \\n-[compidx]>=0 \{ \ |
|||
. if \\n[compidx]=0 \{ \ |
|||
. nr \\$1..1 \\n[key] |
|||
. break |
|||
. \} |
|||
. ie \\n[\\$1..\\n[compidx]]>\\n[key] \{ \ |
|||
. \\$1.slideright \\n[compidx] |
|||
. \} |
|||
. el \{ \ |
|||
. nr compidx+1 \\n[compidx]+1 |
|||
. nr \\$1..\\n[compidx+1] \\n[key] |
|||
. break |
|||
. \} |
|||
. \} |
|||
. \} |
|||
.. |
|||
.array a |
|||
.a.pushln 13 64 22 87 54 87 23 92 11 64 5 9 3 3 0 |
|||
.insertionsort a |
|||
.a.dump</lang> |
|||
===Swapping method=== |
|||
<lang N/t/roff>.de end |
|||
.. |
|||
.de array |
|||
. nr \\$1.c 0 1 |
|||
. de \\$1.push end |
|||
. nr \\$1..\\\\n+[\\$1.c] \\\\$1 |
|||
. end |
|||
. de \\$1.pushln end |
|||
. if \\\\n(.$>0 .\\$1.push \\\\$1 |
|||
. if \\\\n(.$>1 \{ \ |
|||
. shift |
|||
. \\$1.pushln \\\\$@ |
|||
. \} |
|||
. end |
|||
. de \\$1.dump end |
|||
. nr i 0 1 |
|||
. ds out " |
|||
. while \\\\n+i<=\\\\n[\\$1.c] .as out "\\\\n[\\$1..\\\\ni] |
|||
. tm \\\\*[out] |
|||
. rm out |
|||
. rr i |
|||
. end |
|||
. de \\$1.swap end |
|||
. if (\\\\$1<=\\\\n[\\$1.c])&(\\\\$1<=\\\\n[\\$1.c]) \{ \ |
|||
. nr tmp \\\\n[\\$1..\\\\$2] |
|||
. nr \\$1..\\\\$2 \\\\n[\\$1..\\\\$1] |
|||
. nr \\$1..\\\\$1 \\\\n[tmp] |
|||
. rr tmp |
|||
. \} |
|||
. end |
|||
.. |
|||
.de insertionsort |
|||
. nr keyidx 1 1 |
|||
. while \\n+[keyidx]<=\\n[\\$1.c] \{ \ |
|||
. nr compidx \\n[keyidx]+1 1 |
|||
. nr compidx-1 \\n[keyidx] 1 |
|||
. while (\\n-[compidx]>0)&(\\n[\\$1..\\n-[compidx-1]]>\\n[\\$1..\\n[compidx]]) \{ \ |
|||
. \\$1.swap \\n[compidx] \\n[compidx-1] |
|||
. \} |
|||
. \} |
|||
.. |
|||
.array a |
|||
.a.pushln 13 64 22 87 54 87 23 92 11 64 5 9 3 3 0 |
|||
.insertionsort a |
|||
.a.dump</lang> |
|||
=={{header|Nemerle}}== |
=={{header|Nemerle}}== |