Re: functional code

*To*: mathgroup at smc.vnet.net*Subject*: [mg4853] Re: functional code*From*: rhall2 at umbc.edu (hall robert)*Date*: Thu, 26 Sep 1996 22:42:14 -0400*Organization*: University of Maryland, Baltimore County*Sender*: owner-wri-mathgroup at wolfram.com

Thanks to David Lichtblau for explaining where the bottlenecks were. One further question; why does his code take twice as long to run as Hayes'? Does it have to do with constantly modifying 'result', rather than using Table[] to create the new list? The two functions are reproduced below. hayes[row_] := Block[ {f=1, l = Length[row]}, Table[ If[ row[[f]]>row[[l]], row[[f++]], row[[l--]] ], {l} ] ] lichtblau[input_List] := Module[ {j=1, k=Length[input], result={}}, While[j<=k, If [input[[j]] > input[[k]], result = {result, input[[j]]}; j++, result = {result, input[[k]]}; k--]; ]; Flatten[result] ] Join[] seems to be faster than Flatten[] on long lists. In[32]:= row = Table[Random[], {1000}]; In[38]:= Table[Flatten[{{a}, row}], {10}]; // Timing Out[38]= {7.1 Second, Null} In[39]:= Table[Join[{a}, row], {10}]; // Timing Out[39]= {1.11667 Second, Null} The difference isn't so pronounced on smaller lists. Can someone explain the difference in times? -- Bob Hall | "Know thyself? Absurd direction! rhall2 at gl.umbc.edu | Bubbles bear no introspection." -Khushhal Khan Khatak ==== [MESSAGE SEPARATOR] ====