Mathematica 9 is now available
Services & Resources / Wolfram Forums
-----
 /
MathGroup Archive
2004
*January
*February
*March
*April
*May
*June
*July
*August
*September
*October
*November
*December
*Archive Index
*Ask about this page
*Print this page
*Give us feedback
*Sign up for the Wolfram Insider

MathGroup Archive 2004

[Date Index] [Thread Index] [Author Index]

Search the Archive

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
>


  • Prev by Date: Re: Re: Infrequent Mathematica User
  • Next by Date: RE: change PlotStyle in Graphics object after the fact?
  • Previous by thread: Re: sort list
  • Next by thread: RE: exporting animations to powerpoint