expanded class interface REVERSE_COLLECTION_SORTER[X->COMPARABLE] -- -- Some algorithms to sort any COLLECTION[COMPARABLE]. -- -- Elements are sorted using decreasing order: large elements -- at the begining of the colection, small at the end (increasing -- order is implemented by class COLLECTION_SORTER). -- -- How to use this expanded class : -- -- local -- sorter: REVERSE_COLLECTION_SORTER[INTEGER]; -- array: ARRAY[INTEGER]; -- do -- array := <<1,3,2>>; -- sorter.sort(array); -- check -- sorter.is_sorted(array); -- end; -- ... -- feature(s) from REVERSE_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) 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) heap_sort (c: COLLECTION[X]) -- Sort c using the heap sort algorithm. require c /= Void ensure c.count = old c.count; is_sorted(c) end of expanded REVERSE_COLLECTION_SORTER[X->COMPARABLE]