[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