heapsort shootout rewrite

Henry Cejtin henry@sourcelight.com
Wed, 20 Jun 2001 01:06:21 -0500


I don't see more than 10% either way, but the code is more readable.  Here is
the way I would write it (noopt.sml) and then a tweak to avoid fetching array
elements  more than once (opt.sml).  The latter only seemed to buy 3% for the
80,000 element case, so it really isn't worth any thing.


begin 600 hsort.tgz
M'XL(`"X],#L"`^U7;6_B1A#F*_X5T^@D;,H9+Z\7$J*K3JF4JKV32J562J/3
M!A8PM==HO207J>IO[\P:$X.`$'(YJ=4^4H(]?G9VWO9E9)+,M9_&4>GU$+`@
MZ+1:I0#1:@3FERW?$6W&\+G;9*V@V>YV.LAO(+$$0>D;8)%JK@!*4R'5PUZ>
M4&GI?P>W"F^K;R%.1J('6`;TYD`5WER->C`5?)XF2OMQI!-9NP/F,\#<L'K0
MJ0<,6+?7/NVQ!HR2Q00NO\SA#8V=:CWOU>OW]_?^+9]$XL%/U*3^#Y'JZ31)
M=++0=2*.51+#0(LY!A]^%^*OE*2_*2[3B&LQR@@K*Y(ACR/?J7J.<\<C2!>W
MT(<?E.(//CX;V6(^PH$K<?;J`(`3X>B(GH@6QDAAS=/3SKN5B*,(H/FNVUV)
MAB1JG+:[S5P4\52C4(DQM!JY,$7--"?S`ZC#KX)'/AE^)35.Y(22>..%A(F0
MG]&W$?H4\R_0=\H`D=`KQ174X7Z7S5$E@[Y'$SS*#>E!<BBSC[U^QC\C(8*T
M59=F5-<-,#RB"3ERZ,\A2RBD`PPIN+(&BO?0(;2!4\P\M`LRD&W$#J44"MRH
M!J%"NN(%3@$Y/<(M!=RP!K/MO`+",<S@O(]Z]_,0FFHDC];L*<4[YSIDJDU@
MRGB4)J;@7,6-8^>%-\P3\YZM-??)##]FM(A2`;/#1U+@#DO+]NAAXM?</MYE
M=[E,C1ZTJ*#3.SM&:P9WEB4#M1P=3PI0J)Z1T7"MX`\;0^OP(&LVXD1+S]EC
M`J[0"$V/MI$VYJ2%BMNP4`R'[%K-9F.B70F/A:TUBC-C82#E`@)G?\KS3:12
M`UG(>%1Y.N6YG97=X<UR]QR_&Y3F?8Y3N?<?#0W5KMF)_!FI:\E2!1^9MV\H
MF4'_]D78<-C^"!>G9SMK9:W4LY2PQWW]H$PT=L2B$.EP55RNA%%X!PVSHHKJ
MEZJD4QAMSB:NDQ!2]'?(T4@\P\Q9-M`JE!.4)V,8?/KE$N0"S_`+\_,W?/ST
M\9+>@C.C8HY<'<'U#6HQSW#RISQ!7O;!G?9ZVJ/#=OEU"F?Y&`UHI5$2<_3"
ME3P6-3P9)^G&P4BIDZC#F.M.1^`2"=[#]0D[N<&,EY?YY>IA=1_1_'81F2Q)
M"D@-QI)*YZ)X-<!;A%>(X]I1C;H\<^AG=KO#1`ZYANOLR(]1DL7IPYWV?[SZ
M`U\I5"SP/'!-.:("7'^>5W/*Y;*)RHVWEH&\F,E[%SXD<8Q6_1Q*X5,D7*^V
M)D.7%[&0.G4]\)R2Q7\.K]_]/=G_=8)VD/=_K-NE_@^_VO[/]G^V_[/]W];^
MCV[ZB@\6MS\=T\NL;GA&0_&2=T1/DUW0CNPLM[6V5`5']X2;E\O,Q<J:CQ7O
M)9HS?Y>A.\\G>*FM>9<PJ^2)?9F5Q6ON8ZV\1.,A/=LK6?&LJ;].EY^9^M4:
H_*7GMK>WO;WM[6UO;WM[V]M;6%A86%A86%A86'QS_`M]T]U[`"@```==
`
end