#N canvas 686 156 469 402 10; #X obj 26 -25 inlet; #X obj 26 222 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 174 151 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 174 196 pd \$0-increment-loop; #X obj 174 126 t f f; #X obj 174 174 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 174 222 pd \$0-test-swap-loop; #X obj 135 104 sel 0 1; #X obj 26 0 list-filter; #N canvas 0 0 677 293 \$0-checknum 0; #X obj 131 95 route float; #X msg 131 116 1; #X obj 205 149 print; #X msg 205 119 list-sort: Warning: dropped a non-number from list; #X obj 131 70 inlet; #X obj 131 149 outlet; #X connect 0 0 1 0; #X connect 0 1 3 0; #X connect 1 0 5 0; #X connect 3 0 2 0; #X connect 4 0 0 0; #X restore 115 0 pd \$0-checknum; #X text 41 273 2008 Matt Barber; #X obj 381 133 loadbang; #X obj 316 45 inlet; #X obj 316 194 list append \$1; #X obj 316 164 t b a; #X obj 316 222 s \$0-direction; #N canvas 363 457 421 406 \$0-table 1; #X obj 80 75 list-len; #X msg 226 257 resize \$1; #X obj 60 274 s \$0-table; #X obj 41 24 inlet; #X obj 31 298 outlet; #X obj 60 118 list prepend 0; #X obj 148 92 t f f; #X obj 41 46 t b a a; #X obj 31 109 f; #X obj 139 24 table \$0-table 100; #X obj 175 112 moses 100; #X obj 226 235 t f f; #X obj 175 149 * 0.01; #X obj 175 171 + 1; #X obj 175 194 int; #X obj 175 218 * 100; #X connect 0 0 6 0; #X connect 1 0 2 0; #X connect 3 0 7 0; #X connect 5 0 2 0; #X connect 6 0 8 1; #X connect 6 1 10 0; #X connect 7 0 8 0; #X connect 7 1 5 0; #X connect 7 2 0 0; #X connect 8 0 4 0; #X connect 10 1 12 0; #X connect 11 0 1 0; #X connect 11 1 10 1; #X connect 12 0 13 0; #X connect 13 0 14 0; #X connect 14 0 15 0; #X connect 15 0 11 0; #X restore 135 39 pd \$0-table; #X obj 197 76 s \$0-length; #X obj 135 59 t f f; #X obj 26 222 outlet; #X obj 26 199 list-tabdump; #X obj 26 153 list prepend \$0-table; #X obj 26 127 f; #X obj 41 105 r \$0-length; #X obj 26 177 list append 0; #X obj 26 22 t b a; #X connect 0 0 8 0; #X connect 2 0 5 0; #X connect 3 0 6 0; #X connect 4 0 2 0; #X connect 4 1 3 1; #X connect 5 0 3 0; #X connect 5 1 6 1; #X connect 7 2 4 0; #X connect 8 0 25 0; #X connect 8 1 9 0; #X connect 9 0 8 1; #X connect 11 0 13 0; #X connect 12 0 14 0; #X connect 13 0 15 0; #X connect 14 0 13 0; #X connect 14 1 13 1; #X connect 16 0 18 0; #X connect 18 0 7 0; #X connect 18 1 17 0; #X connect 20 0 19 0; #X connect 21 0 24 0; #X connect 22 0 21 0; #X connect 23 0 22 1; #X connect 24 0 20 0; #X connect 25 0 22 0; #X connect 25 1 16 0;