[Newbies] How to doubble sort a collection - DynamicSortBlock.st (1/1)

Louis LaBrunda Lou at Keystone-Software.com
Wed Feb 4 17:27:15 UTC 2015


begin 644 DynamicSortBlock.st
M#0I/8FIE8W0@<W5B8VQA<W,Z("-$>6YA;6EC4V]R=$)L;V-K#0H@("`@8VQA
M<W-);G-T86YC959A<FEA8FQE3F%M97,Z("<G#0H@("`@:6YS=&%N8V5687)I
M86)L94YA;65S.B`G86-C97-S;W)S(&1I<F5C=&EO;G,@)PT*("`@(&-L87-S
M5F%R:6%B;&5.86UE<SH@)R<-"B`@("!P;V]L1&EC=&EO;F%R:65S.B`G)R$-
M"@T*(41Y;F%M:6-3;W)T0FQO8VL at 8VQA<W,@<'5B;&EC365T:&]D<R`A#0H-
M"F%C8V5S<V]R<SH at 86Y/<F1E<F5D0V]L;&5C=&EO;@T*"2)#<F5A=&4 at 82!N
M97<@:6YS=&%N8V4 at 86YD('-E="!A8V-E<W-O<G,N(@T*#0H)7BAS96QF(&YE
M=RD at 86-C97-S;W)S.B!A;D]R9&5R961#;VQL96-T:6]N.R!Y;W5R<V5L9BX-
M"B$-"@T*86-C97-S;W)S.B!A;D]R9&5R961#;VQL96-T:6]N(&1I<F5C=&EO
M;G,Z(&%N3W)D97)E9$-O;&QE8W1I;VXR#0H)(D-R96%T92!A(&YE=R!I;G-T
M86YC92!A;F0@<V5T(&%C8V5S<V]R<R!A;F0 at 9&ER96-T:6]N<RXB#0H-"@E>
M*'-E;&8@;F5W*2!A8V-E<W-O<G,Z(&%N3W)D97)E9$-O;&QE8W1I;VX at 9&ER
M96-T:6]N<SH at 86Y/<F1E<F5D0V]L;&5C=&EO;C([('EO=7)S96QF+ at T*(0T*
M#0IS;W)T0W)I=&5R:6$Z(&%N3W)D97)E9$-O;&QE8W1I;VX-"@DB0W)E871E
M(&$@;F5W(&EN<W1A;F-E(&%N9"!S970 at 86-C97-S;W)S(&%N9"!D:7)E8W1I
M;VYS(&9R;VT@=&AE(&]R9&5R960 at 8V]L;&5C=&EO;B!O9B!A<W-O8VEA=&EO
M;G,-"@D)=VAE<F4@=&AE(&ME>2!I<R!A;B!A8V-E<W-O<B!A;F0@=&AE('9A
M;'5E(&ES(&$@8F]O;&5A;B!D:7)E8W1I;VXN(@T*#0H)7BAS96QF(&YE=RD@
M<V]R=$-R:71E<FEA.B!A;D]R9&5R961#;VQL96-T:6]N.R!Y;W5R<V5L9BX-
M"B$@(0T*#0HA1'EN86UI8U-O<G1";&]C:R!P=6)L:6--971H;V1S("$-"@T*
M86-C97-S;W)S#0H)(D%N<W=E<B!A8V-E<W-O<G,N("!!;B!O<F1E<F5D(&-O
M;&QE8W1I;VX@;V8@;65T:&]D(&YA;65S("A3>6UB;VQS*2!U<V5D(&9O<B!S
M;W)T:6YG(&-O;7!L97@@8VQA<W-E<RXB#0H)(E-E92`C=F%L=64Z=F%L=64Z
M(@T*#0H)86-C97-S;W)S(&ES3FEL(&EF5')U93H at 6V%C8V5S<V]R<R`Z/2!/
M<F1E<F5D0V]L;&5C=&EO;B!N97==+ at T*"5YA8V-E<W-O<G,N#0HA#0H-"F%C
M8V5S<V]R<SH at 86Y/<F1E<F5D0V]L;&5C=&EO;@T*"2)3970 at 86-C97-S;W)S
M+B`@06X@;W)D97)E9"!C;VQL96-T:6]N(&]F(&UE=&AO9"!N86UE<R`H4WEM
M8F]L<RD@=7-E9"!F;W(@<V]R=&EN9R!C;VUP;&5X(&-L87-S97,N(@T*"2)3
M964@(W9A;'5E.G9A;'5E.B(-"@T*"6%C8V5S<V]R<R`Z/2!A;D]R9&5R961#
M;VQL96-T:6]N(&%S3W)D97)E9$-O;&QE8W1I;VXN#0HA#0H-"F%C8V5S<V]R
M<SH at 86Y/<F1E<F5D0V]L;&5C=&EO;B!D:7)E8W1I;VYS.B!A;D]R9&5R961#
M;VQL96-T:6]N, at T*"2)3970 at 86-C97-S;W)S+B`@06X@;W)D97)E9"!C;VQL
M96-T:6]N(&]F(&UE=&AO9"!N86UE<R`H4WEM8F]L<RD@=7-E9"!F;W(@<V]R
M=&EN9R!C;VUP;&5X(&-L87-S97,N(@T*"2)3970 at 9&ER96-T:6]N<RX@($%N
M(&]R9&5R960 at 8V]L;&5C=&EO;B!O9B!B;V]L96%N<R!U<V5D(&9O<B!S;W)T
M:6YG(&-O;7!L97@@8VQA<W-E<RXB#0H)(D]N92!F;W(@96%C:"!S>6UB;VP@
M:6X at 86-C97-S;W)S+"!T<G5E(&UE86YS(&%S8V5N9&EN9RP at 9F%L<V4@;65A
M;G, at 9&5S8V5N9&EN9RXB#0H)(E-E92`C=F%L=64Z=F%L=64Z(@T*#0H)<V5L
M9B!A8V-E<W-O<G,Z(&%N3W)D97)E9$-O;&QE8W1I;VXN#0H)<V5L9B!D:7)E
M8W1I;VYS.B!A;D]R9&5R961#;VQL96-T:6]N,BX-"B$-"@T*861D.B!A;D%S
M<V]C:6%T:6]N3W)3>6UB;VP-"@DB268 at 86X@87-S;V-I871I;VXL(&%D9"!T
M:&4 at 86-C97-S;W(@86YD(&1I<F5C=&EO;B!F<F]M('1H92!A<W-O8VEA=&EO
M;BP-"@D)96QS92!A9&0@=&AE('-Y;6)O;"!A;F0 at 87-C96YD:6YG(&1I<F5C
M=&EO;BXB#0H-"@EA;D%S<V]C:6%T:6]N3W)3>6UB;VP@:7-3>6UB;VP@:694
M<G5E.B!;#0H)"7-E;&8 at 86-C97-S;W)S(&%D9#H at 86Y!<W-O8VEA=&EO;D]R
M4WEM8F]L+ at T*"0ES96QF(&1I<F5C=&EO;G, at 861D.B!T<G5E+ at T*"5T@:69&
M86QS93H at 6PT*"0ES96QF(&%C8V5S<V]R<R!A9&0Z(&%N07-S;V-I871I;VY/
M<E-Y;6)O;"!K97DN#0H)"7-E;&8 at 861D1&ER96-T:6]N.B!A;D%S<V]C:6%T
M:6]N3W)3>6UB;VP@=F%L=64N#0H)72X-"B$-"@T*861D06-C97-S;W(Z(&%3
M>6UB;VP at 86YD1&ER96-T:6]N.B!A0F]O;&5A;D]R4W1R:6YG#0H)(D%D9"!T
M:&4 at 86-C97-S;W(@86YD(&ET<R!D:7)E8W1I;VXN(@T*#0H)<V5L9B!A8V-E
M<W-O<G, at 861D.B!A4WEM8F]L+ at T*"7-E;&8 at 861D1&ER96-T:6]N.B!A0F]O
M;&5A;D]R4W1R:6YG+ at T*(0T*#0IA9&1!<V,Z(&%3>6UB;VP-"@DB061D('1H
M92!A8V-E<W-O<B!A;F0 at 86X@87-C96YD:6YG(&1I<F5C=&EO;BXB#0H-"@ES
M96QF(&%C8V5S<V]R<R!A9&0Z(&%3>6UB;VPN#0H)<V5L9B!D:7)E8W1I;VYS
M(&%D9#H@=')U92X-"B$-"@T*861D1&5S8SH at 85-Y;6)O;`T*"2)!9&0@=&AE
M(&%C8V5S<V]R(&%N9"!A(&1E<V-E;F1I;F<@9&ER96-T:6]N+B(-"@T*"7-E
M;&8 at 86-C97-S;W)S(&%D9#H at 85-Y;6)O;"X-"@ES96QF(&1I<F5C=&EO;G,@
M861D.B!F86QS92X-"B$-"@T*861D1&ER96-T:6]N.B!B;V]L96%N3W)3=')I
M;F<-"@DB061D(&$@9&ER96-T:6]N('1O('1H92!O<F1E<F5D(&-O;&QE8W1I
M;VX@;V8 at 8F]O;&5A;G,@=7-E9"!F;W(@<V]R=&EN9R!C;VUP;&5X(&-L87-S
M97,N(@T*"2)3964@(W9A;'5E.G9A;'5E.B(-"@T*"2)!;&QO=R!F;W(@=')U
M92P at 9F%L<V4L("-A<V-E;F1I;F<L("-D97-C96YD:6YG+"`G87-C96YD:6YG
M)RP@)V1E<V-E;F1I;F<G(&]R("-G87)B86=E+ at T*"41I<F5C=&EO;B!D969A
M=6QT<R!T;R!A<V-E;F1I;F<L('-O(&EF(&)O;VQE86Y/<E-T<FEN9R!I<R!A
M;GET:&EN9R!O=&AE<B!T:&%N('1R=64L(&9A;'-E(&]R(&$@<W1R:6YG#0H)
M<W1A<G1I;F<@=VET:"!A("=D)R!O<B`G1"<L(&%S8V5N9&EN9R!I<R!A<W-U
M;65D+B(-"@T*"7-E;&8 at 9&ER96-T:6]N<R!A9&0Z("@H8F]O;&5A;D]R4W1R
M:6YG(#T](&9A;'-E*2!O<CH at 6V)O;VQE86Y/<E-T<FEN9R!I<U-T<FEN9R!A
M;F0Z(%LG9"HG(&UA=&-H.B!B;V]L96%N3W)3=')I;F==72D@;F]T+ at T*(0T*
M#0ID:7)E8W1I;VYS#0H)(D%N<W=E<B!D:7)E8W1I;VYS+B`@06X@;W)D97)E
M9"!C;VQL96-T:6]N(&]F(&)O;VQE86YS('5S960 at 9F]R('-O<G1I;F<@8V]M
M<&QE>"!C;&%S<V5S+B(-"@DB3VYE(&9O<B!E86-H('-Y;6)O;"!I;B!A8V-E
M<W-O<G,L('1R=64@;65A;G, at 87-C96YD:6YG+"!F86QS92!M96%N<R!D97-C
M96YD:6YG+B(-"@DB4V5E("-V86QU93IV86QU93HB#0H-"@ED:7)E8W1I;VYS
M(&ES3FEL(&EF5')U93H at 6V1I<F5C=&EO;G, at .CT@3W)D97)E9$-O;&QE8W1I
M;VX@;F5W72X-"@E>9&ER96-T:6]N<RX-"B$-"@T*9&ER96-T:6]N<SH at 86Y/
M<F1E<F5D0V]L;&5C=&EO;@T*"2)3970 at 9&ER96-T:6]N<RX@($%N(&]R9&5R
M960 at 8V]L;&5C=&EO;B!O9B!B;V]L96%N<R!U<V5D(&9O<B!S;W)T:6YG(&-O
M;7!L97@@8VQA<W-E<RXB#0H)(D]N92!F;W(@96%C:"!S>6UB;VP@:6X at 86-C
M97-S;W)S+"!T<G5E(&UE86YS(&%S8V5N9&EN9RP at 9F%L<V4@;65A;G, at 9&5S
M8V5N9&EN9RXB#0H)(E-E92`C=F%L=64Z=F%L=64Z(@T*#0H)(D%L;&]W(&9O
M<B`C*'1R=64 at 9F%L<V4@(V%S8V5N9&EN9R`C9&5S8V5N9&EN9R`G87-C96YD
M:6YG)R`G9&5S8V5N9&EN9R<@(V=A<F)A9V4I('1H870@=VEL;"!R97-U;'0@
M:6XZ#0H)86X at 3W)D97)E9$-O;&QE8W1I;VXH=')U92!F86QS92!T<G5E(&9A
M;'-E('1R=64 at 9F%L<V4@=')U92DN("!$:7)E8W1I;VX at 9&5F875L=',@=&\@
M87-C96YD:6YG+"!S;R!I9B!V86QU97, at 87)E(&%N>71H:6YG#0H);W1H97(@
M=&AA;B!T<G5E+"!F86QS92!O<B!A('-T<FEN9R!S=&%R=&EN9R!W:71H(&$@
M)V0G(&]R("=$)RP at 87-C96YD:6YG(&ES(&%S<W5M960N(@T*#0H)9&ER96-T
M:6]N<R`Z/2!A;D]R9&5R961#;VQL96-T:6]N(&%S3W)D97)E9$-O;&QE8W1I
M;VX at 8V]L;&5C=#H at 6SIB;V]L96%N3W)3=')I;F<@?`T*"0DH*&)O;VQE86Y/
M<E-T<FEN9R`]/2!F86QS92D@;W(Z(%MB;V]L96%N3W)3=')I;F<@:7-3=')I
M;F<@86YD.B!;)V0J)R!M871C:#H at 8F]O;&5A;D]R4W1R:6YG75TI(&YO=%TN
M#0HA#0H-"G!A:7)E9$1I<F5C=&EO;G,-"@DB06YS=V5R(&1I<F5C=&EO;G,L
M(&%N(&]R9&5R960 at 8V]L;&5C=&EO;B!O9B!B;V]L96%N<R!F:6QL960@=&\@
M;6%T8V@@=&AE('-I>F4@;V8 at 86-C97-S;W)S+B(-"@DB4V5E("-D:7)E8W1I
M;VYS(&%N9"`C=F%L=64Z=F%L=64Z(@T*"7P@<&%I<F5D1&ER96-T:6]N<R!A
M9&1#;G0@?`T*#0H)<&%I<F5D1&ER96-T:6]N<R`Z/2!S96QF(&1I<F5C=&EO
M;G, at 8V]P>2X-"@EA9&1#;G0 at .CT@<V5L9B!A8V-E<W-O<G,@<VEZ92`M('!A
M:7)E9$1I<F5C=&EO;G,@<VEZ92X-"@EA9&1#;G0@=&EM97-297!E870Z(%MP
M86ER961$:7)E8W1I;VYS(&%D9#H@=')U95TN#0H)7G!A:7)E9$1I<F5C=&EO
M;G,N#0HA#0H-"G!R:6YT3VXZ(&%3=')E86T-"@DB4')I;G0@=&AE(&%C8V5S
M<V]R<R!A;F0 at 9&ER96-T:6]N<R!O;B!T:&4@<W1R96%M+B(-"@T*"6%3=')E
M86T@;F5X=%!U=$%L;#H@)T$@1'EN86UI8R!3;W)T($)L;V-K)SL at 8W(N#0H)
M<V5L9B!A8V-E<W-O<G,@=VET:#H@<V5L9B!P86ER961$:7)E8W1I;VYS(&1O
M.B!;.F%C8V5S<V]R(#ID:7)E8W1I;VX@?"!\(&1I<F5C=&EO;E-T<FEN9R!\
M#0H)"61I<F5C=&EO;E-T<FEN9R`Z/2!D:7)E8W1I;VX@:694<G5E.B!;)T%S
M8V5N9&EN9R==(&EF1F%L<V4Z(%LG1&5S8V5N9&EN9R==+ at T*"0EA4W1R96%M
M('1A8CL@;F5X=%!U=#H@)",[(&YE>'10=71!;&PZ(&%C8V5S<V]R.R!N97AT
M4'5T06QL.B`G("T@)SL@;F5X=%!U=$%L;#H at 9&ER96-T:6]N4W1R:6YG.R!C
M<ETN#0HA#0H-"G-O<G1#<FET97)I80T*"2)!;G-W97(@=&AE(&%C8V5S<V]R
M<R!A;F0 at 9&ER96-T:6]N<R!I;B!T:&4 at 9F]R;2!O9B!A;B!O<F1E<F5D(&-O
M;&QE8W1I;VX@;V8 at 87-S;V-I871I;VYS#0H)"7=H97)E('1H92!K97D@:7,@
M86X at 86-C97-S;W(@86YD('1H92!V86QU92!I<R!A(&)O;VQE86X at 9&ER96-T
M:6]N+B(-"@E\('-O<G1#<FET97)I82!\#0H-"@ES;W)T0W)I=&5R:6$@.CT@
M3W)D97)E9$-O;&QE8W1I;VX@;F5W+ at T*"7-E;&8 at 86-C97-S;W)S('=I=&@Z
M('-E;&8@<&%I<F5D1&ER96-T:6]N<R!D;SH at 6SIA8V-E<W-O<B`Z9&ER96-T
M:6]N('P@<V]R=$-R:71E<FEA(&%D9#H@*$%S<V]C:6%T:6]N(&ME>3H at 86-C
M97-S;W(@=F%L=64Z(&1I<F5C=&EO;BE=+ at T*"5YS;W)T0W)I=&5R:6$N#0HA
M#0H-"G-O<G1#<FET97)I83H at 86Y/<F1E<F5D0V]L;&5C=&EO;@T*"2)3970@
M86-C97-S;W)S(&%N9"!D:7)E8W1I;VX at 9G)O;2!T:&4@;W)D97)E9"!C;VQL
M96-T:6]N(&]F(&%S<V]C:6%T:6]N<R!W:&5R92!T:&4@:V5Y(&ES(&%N(&%C
M8V5S<V]R#0H)"6%N9"!T:&4@=F%L=64@:7, at 82!B;V]L96%N(&1I<F5C=&EO
M;BXB#0H-"@EA;D]R9&5R961#;VQL96-T:6]N(&1O.B!;.G-O<G1#<FET97)I
M82!\('-E;&8 at 861D06-C97-S;W(Z('-O<G1#<FET97)I82!K97D at 86YD1&ER
M96-T:6]N.B!S;W)T0W)I=&5R:6$@=F%L=65=+ at T*(0T*#0IV86QU93H@:71E
M;4$@=F%L=64Z(&ET96U"#0H)(D-O;7!A<F4@=&AE('1W;R!I=&5M<R!B87-E
M9"!U<&]N('1H92!A8V-E<W-O<G, at 86YD(&1I<F5C=&EO;G,N(@T*"2)%<G)O
M<G, at 86-C97-S:6YG('9A;'5E<R!B>2!T:&4 at 86-C97-S;W)S(&%R92!T<F%P
M<&5D(&%N9"!A;B!A='1E;7!T(&ES(&UA9&4@=&\@9V5T(&$@=F%L=64@=FEA
M("-A=#HN(@T*"2)4:&ES(&ES('1O(&%C8V]M;6]D871E('-O<G1I;F<@9&%T
M86)A<V4@<F]W<R!A;F0@;W1H97(@<F5C;W)D<R!T:&%T(')E<W!O;F0@=&\@
M(V%T.BXB#0H)(E-U8G-E<75E;G0 at 97)R;W)S(&%R92!N;W0@=')A<'!E9"XB
M#0H)(DYO=&4Z(&YI;"!V86QU97, at 87)E('1R96%T960 at 87,@;&5S<R!T:&%N
M('1H96ER(&-O<G)E<W!O;F1I;F<@=F%L=64N(@T*"7P@<&%I<F5D1&ER96-T
M:6]N<R!\#0H-"@EP86ER961$:7)E8W1I;VYS(#H]('-E;&8@<&%I<F5D1&ER
M96-T:6]N<RX-"@T*"7-E;&8 at 86-C97-S;W)S('=I=&@Z('!A:7)E9$1I<F5C
M=&EO;G, at 9&\Z(%LZ86-C97-S;W(@.F1I<F5C=&EO;B!\('P@=F%L=65!('9A
M;'5E0B!\#0H)"79A;'5E02`Z/2!;:71E;4$@<&5R9F]R;3H at 86-C97-S;W)=
M('=H96XZ($5X17)R;W(@9&\Z(%LZ<VEG;F%L('P@<VEG;F%L(&5X:717:71H
M.B`H:71E;4$@870Z(&%C8V5S<V]R*5TN#0H)"79A;'5E0B`Z/2!;:71E;4(@
M<&5R9F]R;3H at 86-C97-S;W)=('=H96XZ($5X17)R;W(@9&\Z(%LZ<VEG;F%L
M('P@<VEG;F%L(&5X:717:71H.B`H:71E;4(@870Z(&%C8V5S<V]R*5TN#0H)
M"2AV86QU94$@/2!V86QU94(I(&EF1F%L<V4Z(%L-"@D)"79A;'5E02!I<TYI
M;"!I9E1R=64Z(%M>9&ER96-T:6]N72X-"@D)"79A;'5E0B!I<TYI;"!I9E1R
M=64Z(%M>9&ER96-T:6]N(&YO=%TN#0H)"0DH=F%L=65!(#P@=F%L=65"*2!I
M9E1R=64Z(%M>9&ER96-T:6]N72X-"@D)"2AV86QU94$@/B!V86QU94(I(&EF
M5')U93H at 6UYD:7)E8W1I;VX@;F]T72X-"@D)72X-"@E=+ at T*"5YT<G5E+ at T*
L(2`A#0H-"D1Y;F%M:6-3;W)T0FQO8VL@:6YI=&EA;&EZ94%F=&5R3&]A9"$*
`
end



More information about the Beginners mailing list