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]