Re: Sort[] accuracy problem, etc.

*To*: mathgroup at christensen.cybernetics.net*Subject*: [mg1168] Re: Sort[] accuracy problem, etc.*From*: Allan Hayes <hay at haystack.demon.co.uk>*Date*: Sat, 20 May 1995 03:13:27 -0400

In [mg1130] Sort[] accuracy problem "Wm. Martin McClain" <wmm at chem.wayne.edu> writes: >I have a list of 3D points that I want to "alphabetize", but only up >to a certain accuracy. > ............. >Here is the kind of thing that is giving me trouble: > >In[299]:= Sort[{{5.00, 1}, {4.00, 3}, {1.00, 2}, {4.01, 1}}] >Out[299] = {{1.00, 2}, {4.00, 3}, {4.01, 1}, {5.00, 1}} > >But I would like it to treat 4.00 and 4.01 as the same for the >purposes of sorting, so that it returns the approximately >alphebetized list > > {{1.00, 2}, {4.01, 1}, {4.00, 3}, {5.00, 1}} Here is one way that seems to do what you want and lends itself to modification. In[1]:= ApproxSort[list_] := Sort[Thread[{Round[10 list],list}]]//Thread//Last In[2]:= ApproxSort[{{5.00, 1}, {4.00, 3}, {1.00, 2}, {4.01, 1}}] Out[2]= {{1., 2}, {4.01, 1}, {4., 3}, {5., 1}} You just let the rounded version dominate the order and carry the originals along. Allan Hayes hay at haystack.demon.co.uk