MathGroup Archive 2002

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

Search the Archive

Efficient Sorting Algorithm

  • To: mathgroup at smc.vnet.net
  • Subject: [mg38140] Efficient Sorting Algorithm
  • From: bghiggins at ucdavis.edu (Brian Higgins)
  • Date: Tue, 3 Dec 2002 04:35:13 -0500 (EST)
  • Sender: owner-wri-mathgroup at wolfram.com

Hi,

I have two lists (in general of different length) that have the
following structure

s1 = Table[{FromCharacterCode[Table[Random[Integer, {65, 69}], {4}]], 
       Random[Integer, {1, 2000}]}, {100}];
s2 = Table[{FromCharacterCode[Table[Random[Integer, {65, 69}], {4}]], 
       Random[Integer, {1, 2000}]}, {200}];

I am then interested in obtaining  all the strings in s1 that match
with those in s2. At the present time I use the following agorithm to
find the matches

myList = Flatten[Outer[List, s1, s2, 1], 1];Select[myList,
(First[First[#]] == First[Last[#]]) &]

This works fine, but when s1 and s2 are large  ( e.g. 3000 or more
elements) then Outer seems inefficient.  My question: does anyone have
a suggestion that would be more efficient than my kludge approach.
Note I have tried Intersection, which finds all the matches, i.e.

myList2 = Intersection[s1,s2, SameTest -> (#1[[1]] == #2[[1]] &)];

But I have not been successful in selecting all the matched pairs
using myList2

Thanks in advance for any suggestions.

Brian


  • Prev by Date: Re: Simple Concept I can't figure out! Making rules?
  • Next by Date: Re: Simple Concept I can't figure out! Making rules?
  • Previous by thread: Re: Simple Concept I can't figure out! Making rules?
  • Next by thread: Re: Efficient Sorting Algorithm