Jussi Lahtinen ha scritto: > Meaning like this? Should be faster! > > Dim col As New Collection > > For ii = 0 To iMyArray.Max > col.Add(iMyArray[ii], iMyArray[ii]) > Next > > iMyArray.Clear() > > For Each ii In col > iMyArray.Add(ii) > Next > > > Jussi > > > 2009/8/21 Benoît Minisini <gam...@users.sourceforge.net>: > >>> Now I use algorithm like this (maybe not optimal); >>> >>> Dim ii As Integer >>> Dim jj As Integer >>> Dim bRemove As Boolean >>> >>> While ii < iMyArray.Count >>> >>> jj = 0 >>> bRemove = False >>> While jj < iMyArray.Count >>> If ii <> jj And iMyArray[ii] = iMyArray[jj] Then >>> iMyArray.Remove(ii) >>> bRemove = True >>> Else >>> Inc jj >>> Endif >>> Wend >>> >>> If bRemove = False Then >>> Inc ii >>> Endif >>> Wend >>> >>> >>> Good point Benôit. Array is populated from file, but maybe I should use >>> .Find() before .Add(). >>> >>> >>> Jussi >>> >>> >> You should use a collection to detect duplicates, otherwise your algorithm is >> O(n^2) >> Another technique could be to keep the array (or collection, don't know) sorted while constructing it. If sorted, a single run can detect all the duplicates, giving O(n). If the logic behind requires the values in the original order, then this information should be kept in a parallel array.
Just for fun... Regards, Doriano ------------------------------------------------------------------------------ Let Crystal Reports handle the reporting - Free Crystal Reports 2008 30-Day trial. Simplify your report design, integration and deployment - and focus on what you do best, core application coding. Discover what's new with Crystal Reports now. http://p.sf.net/sfu/bobj-july _______________________________________________ Gambas-user mailing list Gambas-user@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/gambas-user