MathGroup Archive 2013

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

Search the Archive

Re: sorting problem

  • To: mathgroup at smc.vnet.net
  • Subject: [mg130648] Re: sorting problem
  • From: Fred Simons <f.h.simons at tue.nl>
  • Date: Sun, 28 Apr 2013 05:17:15 -0400 (EDT)
  • Delivered-to: l-mathgroup@mail-archive0.wolfram.com
  • Delivered-to: l-mathgroup@wolfram.com
  • Delivered-to: mathgroup-outx@smc.vnet.net
  • Delivered-to: mathgroup-newsendx@smc.vnet.net
  • References: <20130428045759.9057869D1@smc.vnet.net>

Here is one solution, assuming that all elements in your list distances 
are non-negative:

In[1]:= distances={0,Sqrt[2],Sqrt[2],0,0,Sqrt[2],2,Sqrt[2]};

In[2]:= Table[Position[distances,x,1],{x, Union[distances]}] // Flatten

Out[2]= {1,4,5,7,2,3,6,8}

Regards,

Fred Simons
Eindhoven University of Technology

Op 28-4-2013 6:57, S schreef:
> Hello
>
> I need to sort a list in increasing magnitude. If two elements in the list are the same, the element which appears EARLIER in the list should appear first. Finally, I need the indices of the sorted list according to the above two rules.
>
> e.g. for input
> distances = {0, Sqrt[2], Sqrt[2], 0, 0, Sqrt[2], 2, Sqrt[2]}
> I need the answer to be
> k={1,4,5,2,3,6,8,7}
>
> I tried the following commands:
>
> distances = {0, Sqrt[2], Sqrt[2], 0, 0, Sqrt[2], 2, Sqrt[2]}
> Sorteddistances = Sort[distances, Less]
> k = Ordering[distances]
>
> I get output k={1, 4, 5, 7, 2, 3, 6, 8}.
>
> However, I want the output k={1,4,5,2,3,6,8,7}
>
> Can someone please suggest how to do this.
>
> Thanks
>
> S
>



  • Prev by Date: Re: Mathematica-assisted learning was .. Re: Speak errors
  • Next by Date: Re: Convolve : Different Looking Results
  • Previous by thread: sorting problem
  • Next by thread: Re: sorting problem