Path: utzoo!utgpu!water!ljdickey From: ljdickey@water.waterloo.edu (Lee Dickey) Newsgroups: comp.lang.apl Subject: Re: MODE Message-ID: <1451@water.waterloo.edu> Date: 8 Mar 88 13:56:57 GMT References: <1428@water.waterloo.edu> <49700001@uicsrd.csrd.uiuc.edu> Reply-To: ljdickey@water.waterloo.edu (Lee Dickey) Organization: U. of Waterloo, Ontario Lines: 30 In article <49700001@uicsrd.csrd.uiuc.edu> jaxon@uicsrd.csrd.uiuc.edu writes: > ... >For a large array, the outer product in the above solution >can be slow. A solution that makes fewer comparisons is: > ... I think that Greg is right, as is David Lauer, who observed that ..."+/NUB jot.= X" can produce an immensely large intermediate array... David's solution, quite similar to Greg's is : Z <- MODE X X <- X[gradeup X] # SORT X I <- X not_eq 1 shift X # FIND BOUNDARIES BETWEEN GROUPS OF LIKE NUMBERS I <- ( neg 1 drop I),1 # DEAL WITH EDGE CONDITIONS NUB <- I/X # FIND UNIQUE NUMBERS H <- I/ iota rho I # H <- H-0, neg 1 drop H # FIND LENGTH OF RUN (IE: FREQUENCY) I <- H iota (max /H) # FIND MOST FREQUENT (SMALLEST IF SEVERAL) Z <- NUB[I] # LOOK-UP MOST FREQUENT X VALUE David's address is: David Laur -- L. J. Dickey, Faculty of Mathematics, University of Waterloo. ljdickey@waterloo.edu ljdickey@watdcs.BITNET ljdickey@water.UUCP ...!uunet!water!ljdickey