#N canvas 117 513 560 353 10; #X obj 26 -25 inlet; #X obj 26 157 outlet; #N canvas 416 392 593 257 \$0-gap-loop 0; #X obj 137 66 / 2; #X obj 137 89 int; #X obj 34 122 until; #X obj 34 49 t b f; #X obj 189 105 sel 0; #X obj 137 142 t f f; #X obj 59 159 f; #X obj 34 26 inlet; #X obj 59 213 outlet; #X text 91 22 Start with a gap of floor(n/2) \, continue to decrease gap by powers of 1/2.; #X obj 59 181 t f f; #X text 118 182 <== order doesn't matter here \, but we force each iteration of this loop to finish before going on to the next... this seems to save time.; #X connect 0 0 1 0; #X connect 1 0 5 0; #X connect 2 0 6 0; #X connect 3 0 2 0; #X connect 3 1 0 0; #X connect 4 0 2 1; #X connect 5 0 6 1; #X connect 5 1 4 0; #X connect 6 0 10 0; #X connect 7 0 3 0; #X connect 10 0 8 0; #X connect 10 1 0 0; #X restore 187 67 pd \$0-gap-loop; #N canvas 584 66 594 302 \$0-increment-loop 0; #X obj 41 56 inlet; #X obj 222 111 inlet; #X obj 41 113 until; #X obj 41 83 t b f; #X obj 100 130 f; #X obj 150 132 + 1; #X obj 100 182 moses; #X obj 168 199 t b; #X obj 100 218 outlet; #X obj 100 159 t f f; #X text 41 16 Iterate over all the pairs whose indices are related by the current gap size.; #X text 173 155 <== order doesn't matter here \, but we force each iteration of this loop to finish before going on to the next... this seems to save time.; #X obj 168 222 s \$0-stop-inc-loop; #X obj 86 83 r \$0-stop-inc-loop; #X connect 0 0 3 0; #X connect 1 0 6 1; #X connect 2 0 4 0; #X connect 3 0 2 0; #X connect 3 1 4 1; #X connect 4 0 9 0; #X connect 5 0 4 1; #X connect 6 0 8 0; #X connect 6 1 7 0; #X connect 7 0 12 0; #X connect 9 0 6 0; #X connect 9 1 5 0; #X connect 13 0 2 1; #X restore 187 112 pd \$0-increment-loop; #X obj 187 90 t f f; #N canvas 183 142 507 640 \$0-test-swap-loop 0; #X obj 82 90 inlet; #X obj 299 96 inlet; #X obj 82 113 -; #X obj 284 174 +; #X obj 82 449 >; #X obj 82 473 sel 0 1; #X obj 257 499 f; #X obj 290 499 f; #X obj 82 178 until; #X obj 174 241 moses 0; #X obj 174 216 f; #X obj 207 216 -; #X obj 82 134 t b f; #X obj 227 454 t b b; #X obj 213 263 s \$0-idx; #X obj 311 135 r \$0-idx; #X obj 272 442 r \$0-idx; #X obj 97 335 r \$0-idx; #X obj 284 195 s \$0-idx+gap; #X obj 305 466 r \$0-idx+gap; #X obj 220 322 r \$0-idx+gap; #N canvas 468 185 584 529 swap? 0; #X obj 40 52 inlet; #X obj 153 52 inlet; #X obj 40 272 spigot 1; #X obj 256 272 spigot; #X obj 361 224 unpack 0 0; #X msg 361 178 1 0; #X msg 412 196 0 1; #X obj 463 93 select 0; #X obj 361 71 select asc desc; #X obj 40 437 outlet; #X obj 153 437 outlet; #X obj 256 300 swap; #X obj 153 271 spigot 1; #X obj 317 273 spigot; #X obj 361 45 r \$0-direction; #X connect 0 0 2 0; #X connect 0 0 3 0; #X connect 1 0 12 0; #X connect 1 0 13 0; #X connect 2 0 9 0; #X connect 3 0 11 0; #X connect 4 0 2 1; #X connect 4 0 12 1; #X connect 4 1 3 1; #X connect 4 1 13 1; #X connect 5 0 4 0; #X connect 6 0 4 0; #X connect 7 0 5 0; #X connect 7 1 6 0; #X connect 8 0 5 0; #X connect 8 1 6 0; #X connect 8 2 7 0; #X connect 11 0 9 0; #X connect 11 1 10 0; #X connect 12 0 10 0; #X connect 13 0 11 1; #X connect 14 0 8 0; #X restore 82 426 pd swap?; #X obj 82 542 s \$0-stop-test-loop; #X obj 174 285 s \$0-stop-test-loop; #X obj 130 136 r \$0-stop-test-loop; #X obj 82 517 t b; #X obj 174 262 t b; #X text 74 13 If current pair is out of order \, swap them. Then \, if after the swap the values at the left index and left minus gap are out of order \, swap those too. Keep going backwards through the list in the same manner until a swap no longer needs to be made \, or until left minus gap is smaller than zero.; #X text 336 94 <== gap; #X text 118 90 <== increment; #N canvas 677 165 450 300 \$0-tabswap 0; #X obj 164 23 inlet; #X obj 236 47 inlet; #X obj 250 120 f; #X obj 265 97 tabread \$0-table; #X obj 69 120 tabread \$0-table; #X obj 93 204 tabwrite \$0-table; #X obj 164 46 t b f f; #X connect 0 0 6 0; #X connect 1 0 3 0; #X connect 1 0 5 1; #X connect 2 0 5 0; #X connect 3 0 2 1; #X connect 4 0 5 0; #X connect 6 0 2 0; #X connect 6 1 5 1; #X connect 6 2 4 0; #X restore 257 525 pd \$0-tabswap; #X obj 82 358 f; #X obj 205 356 f; #X obj 205 382 tabread \$0-table; #X obj 82 382 tabread \$0-table; #X obj 82 199 t b b b; #X connect 0 0 2 0; #X connect 1 0 2 1; #X connect 1 0 3 1; #X connect 1 0 11 1; #X connect 2 0 12 0; #X connect 3 0 18 0; #X connect 4 0 5 0; #X connect 5 0 25 0; #X connect 5 1 13 0; #X connect 5 2 25 0; #X connect 6 0 30 0; #X connect 7 0 30 1; #X connect 8 0 35 0; #X connect 9 0 26 0; #X connect 9 1 14 0; #X connect 10 0 11 0; #X connect 10 0 9 0; #X connect 11 0 10 1; #X connect 12 0 8 0; #X connect 12 1 10 1; #X connect 13 0 6 0; #X connect 13 1 7 0; #X connect 15 0 3 0; #X connect 16 0 6 1; #X connect 17 0 31 1; #X connect 19 0 7 1; #X connect 20 0 32 1; #X connect 21 0 4 0; #X connect 21 1 4 1; #X connect 24 0 8 1; #X connect 25 0 22 0; #X connect 26 0 23 0; #X connect 31 0 34 0; #X connect 32 0 33 0; #X connect 33 0 21 1; #X connect 34 0 21 0; #X connect 35 0 31 0; #X connect 35 1 32 0; #X connect 35 2 10 0; #X restore 187 138 pd \$0-test-swap-loop; #X obj 26 25 sel 0 1; #X text 41 283 2008 Matt Barber; #X obj 404 33 loadbang; #X obj 339 -5 inlet; #X obj 339 94 list append \$1; #X obj 339 64 t b a; #X obj 339 122 s \$0-direction; #N canvas 401 551 414 371 \$0-table 0; #X obj 216 108 list-len; #X msg 267 281 resize \$1; #X obj 267 302 s \$0-table; #X obj 41 24 inlet; #X obj 41 297 outlet; #X obj 41 185 f; #X obj 199 24 table \$0-table 100; #X obj 216 136 moses 100; #X obj 267 259 t f f; #X obj 216 173 * 0.01; #X obj 216 195 + 1; #X obj 216 218 int; #X obj 216 242 * 100; #X obj 41 46 t b a a b; #N canvas 0 0 583 323 \$0-filter-write 0; #X text 20 20 Filter non-floats quicker than [list-filter]; #X obj 109 69 inlet; #X obj 51 135 list-drip; #X obj 201 204 print; #X obj 158 238 outlet; #X obj 121 207 f; #X obj 149 207 + 1; #X obj 51 273 tabwrite \$0-table; #X msg 136 120 0; #X obj 51 157 route float; #X obj 51 179 t f b; #X obj 109 91 t a b; #X msg 201 174 list-shellsort: Warning: dropped a non-number from list ; #X connect 1 0 11 0; #X connect 2 0 9 0; #X connect 5 0 6 0; #X connect 5 0 7 1; #X connect 6 0 5 1; #X connect 6 0 4 0; #X connect 8 0 5 1; #X connect 9 0 10 0; #X connect 9 1 12 0; #X connect 10 0 7 0; #X connect 10 1 5 0; #X connect 11 0 2 0; #X connect 11 1 8 0; #X connect 12 0 3 0; #X restore 58 145 pd \$0-filter-write; #X msg 92 111 0; #X connect 0 0 7 0; #X connect 1 0 2 0; #X connect 3 0 13 0; #X connect 5 0 4 0; #X connect 7 1 9 0; #X connect 8 0 1 0; #X connect 8 1 7 1; #X connect 9 0 10 0; #X connect 10 0 11 0; #X connect 11 0 12 0; #X connect 12 0 8 0; #X connect 13 0 5 0; #X connect 13 1 14 0; #X connect 13 2 0 0; #X connect 13 3 15 0; #X connect 14 0 5 1; #X connect 15 0 5 1; #X restore 26 -2 pd \$0-table; #X obj 26 157 outlet; #X obj 45 134 list-tabdump; #X obj 45 88 list prepend \$0-table; #X obj 45 112 list append 0; #X msg 45 56 1; #X obj 168 42 t f f f; #X connect 0 0 13 0; #X connect 2 0 4 0; #X connect 3 0 5 0; #X connect 4 0 3 0; #X connect 4 1 5 1; #X connect 6 0 1 0; #X connect 6 1 18 0; #X connect 6 2 19 0; #X connect 8 0 10 0; #X connect 9 0 11 0; #X connect 10 0 12 0; #X connect 11 0 10 0; #X connect 11 1 10 1; #X connect 13 0 6 0; #X connect 15 0 14 0; #X connect 16 0 17 0; #X connect 17 0 15 0; #X connect 18 0 16 0; #X connect 19 0 16 0; #X connect 19 1 2 0; #X connect 19 2 3 1;