expanded class interface COLLECTION_SORTER[X->COMPARABLE]
--
-- Some algorithms to sort any COLLECTION[COMPARABLE].
--
-- Elements are sorted using increasing order: small elements
-- at the begining of the colection, large at the end (decreasing
-- order is implemented by class REVERSE_COLLECTION_SORTER).
--
--
-- How to use this expanded class :
--
-- local
-- sorter: COLLECTION_SORTER[INTEGER];
-- array: ARRAY[INTEGER];
-- do
-- array := <<1,3,2>>;
-- sorter.sort(array);
-- check
-- sorter.is_sorted(array);
-- end;
-- ...
--
feature(s) from COLLECTION_SORTER
is_sorted (c: COLLECTION[X]): BOOLEAN
-- Is c already sorted ?
-- Uses infix "<=" for comparison.
require
c /= Void
ensure
c.is_equal(old c.twin)
sort (c: COLLECTION[X])
-- Sort c using the default most efficient sorting algorithm
-- already implemented.
require
c /= Void
ensure
c.count = old c.count;
is_sorted(c)
quick_sort (c: COLLECTION[X])
-- Sort c using the quick sort algorithm.
require
c /= Void
ensure
c.count = old c.count;
is_sorted(c)
von_neuman_sort (c: COLLECTION[X])
-- Sort c using the Von Neuman algorithm.
-- This algorithm needs to create a second collection.
-- Uses infix "<=" for comparison.
require
c /= Void
ensure
c.count = old c.count;
is_sorted(c)
heap_sort (c: COLLECTION[X])
-- Sort c using the heap sort algorithm.
require
c /= Void
ensure
c.count = old c.count;
is_sorted(c)
bubble_sort (c: COLLECTION[X])
-- Sort c using the bubble sort algorithm.
-- Uses infix "<" for comparison.
require
c /= Void
ensure
c.count = old c.count;
is_sorted(c)
end of expanded COLLECTION_SORTER[X->COMPARABLE]