[Mono-list] arraylist.sort unstable ?
David Schmitt
david at dasz.at
Wed May 14 05:16:29 UTC 2014
On 2014-05-13 22:31, andreas graeper wrote:
> i am learning collections / generics ..
> and found an example defining a class Cmp that implements IComparer using
> CaseInsensitiveComparer
>
> ArrayList l = new ArrayList();
> l.Add("a");
> l.Add("A");
>
> l.Sort(new Cmp()); lprint(l);
> l.Sort(new CaseInsensitiveComparer()); lprint(l);
>
> each time i sort with either of that comparers the order of "a","A" is
> changed,
> though the Compare("a","A") returns 0.
>
> is this an error ?
> using the same comparer class twice should return the same order ?!
No. This is very much dependent on the used Sorting Algorithm. An
algorithm that does not change the relative order of input items that
compare equally (but are not identical) is called "stable". Sort() is
obviously not stable.
See https://en.wikipedia.org/wiki/Sorting_algorithm#Stability
Regards, David
More information about the Mono-list
mailing list