Re: sort list
- To: mathgroup at smc.vnet.net
- Subject: [mg47289] Re: sort list
- From: "Dana DeLouis" <delouis at bellsouth.net>
- Date: Fri, 2 Apr 2004 03:30:57 -0500 (EST)
- Sender: owner-wri-mathgroup at wolfram.com
I like Bill Rowe's solution. Thanks. I changed two custom functions that I was using. 'Some data... v=Table[{ FromCharacterCode[Random[Integer,{97,122}]], Random[Integer,{1,1000}] },{j,10000}]; Timing demo... ans=v[[Ordering[v[[All,2]]]]]//Timing;ans[[1]] 0.11 Second ans=Sort[v, #1[[2]]<#2[[2]]&]//Timing;ans[[1]] 0.852 Second Bill's was faster. Thanks. :>) Taking Bill's idea, "MySort" sorts in increasing order, while "MySortRev" sorts in reverse order. ' = = = = = MySort[v_List,n_Integer]:=v[[Ordering[v[[All,n]]]]] MySortRev[v_List,n_Integer]:=v[[Ordering[v[[All,n]],Length[v],Greater]]] ' = = = = = ' Smaller data set for testing... v=Table[{ FromCharacterCode[Random[Integer,{97,122}]], Random[Integer,{1,1000}] },{j,10}]; MySort[v,2] {{f,16},{s,46},{e,246},{w,364},{n,397},{l,501},{q,568},{e,581},{t,615},{ i,747} } MySortRev[v,2] {{i,747},{t,615},{e,581},{q,568},{l,501},{n,397},{w,364},{e,246},{ s,46},{f,16}} -- -- Dana DeLouis Mathematica 5.0 for Windows delouis at bellsouth.net = = = = = = = = = = = = = = = = = "Bill Rowe" <readnewsciv at earthlink.net> wrote in message news:c4gf8m$2hf$1 at smc.vnet.net... > On 3/30/04 at 4:02 AM, guibout at ifrance.com (Guibout) wrote: > > >Hi, I have a list of the form > >{{something1,x1},{something2,x2},{something3,x3}} where x1,x2, x3 > >are numbers. I want to sort this list with respect to xi. In other > >word if x2<x3<x1 I want Mathematica to produce: > >{{something2,x2},{something3,x3},{something1,x1}} > > There are a number of ways to do this. Either > > Sort[list, OrderedQ[{Last@#1,Last@#2}]&] > > or > > list[[Ordering[list[[All,2]]]]] > > will so what you want. Note, the second of these two methods is much faster for large lists. > -- > To reply via email subtract one hundred and four >