Class SortingMachine5<T>
java.lang.Object
components.sortingmachine.SortingMachineSecondary<T>
components.sortingmachine.SortingMachine5<T>
- Type Parameters:
T- type ofSortingMachineentries
- All Implemented Interfaces:
SortingMachine<T>, SortingMachineKernel<T>, Standard<SortingMachine<T>>, Iterable<T>
SortingMachine represented as a Queue and an array (using an
embedding of heap sort), with implementations of primary methods. The
representation invariant is designed to have the implementation release
references returned by removeFirst.- Mathematical Definitions:
IS_TOTAL_PREORDER ( r: binary relation on T ) : boolean is for all x, y, z: T ((r(x, y) or r(y, x)) and (if (r(x, y) and r(y, z)) then r(x, z))) SUBTREE_IS_HEAP ( a: string of T, start: integer, stop: integer, r: binary relation on T ) : boolean is [the subtree of a (when a is interpreted as a complete binary tree) rooted at index start and only through entry stop of a satisfies the heap ordering property according to the relation r] SUBTREE_ARRAY_ENTRIES ( a: string of T, start: integer, stop: integer ) : finite multiset of T is [the multiset of entries in a that belong to the subtree of a (when a is interpreted as a complete binary tree) rooted at index start and only through entry stop]- Representation Invariant (concrete invariant of $this):
IS_TOTAL_PREORDER([relation computed by $this.machineOrder.compare method]) and if $this.insertionMode then $this.heapSize = 0 else $this.entries = <> and for all i: integer where (0 <= i and i < $this.heapSize) ([entry at position i in $this.heap is not null]) and for all i: integer where ($this.heapSize <= i and i < |$this.heap|) ([entry at position i in $this.heap is null]) and SUBTREE_IS_HEAP($this.heap, 0, $this.heapSize - 1, [relation computed by $this.machineOrder.compare method]) and 0 <= $this.heapSize <= |$this.heap|- Abstraction Relation (interpretation mapping between $this and this):
if $this.insertionMode then this = (true, $this.machineOrder, multiset_entries($this.entries)) else this = (false, $this.machineOrder, multiset_entries($this.heap[0, $this.heapSize)))
-
Constructor Summary
Constructors -
Method Summary
Modifier and TypeMethodDescriptionfinal voidAddsxto the contents ofthis.final voidChanges the mode ofthisfrom insertion to extraction.final voidclear()Resetsthisto an initial value.final booleanReports whetherthisis in insertion mode.iterator()final SortingMachine<T> Returns a new object with the same dynamic type asthis, having an initial value.final Comparator<T> order()ReportsComparatorbeing used for sorting bythis.final TRemoves and returns some "first" ("smallest") entry from the contents ofthis.final intsize()Reports the number of entries inthis.final voidtransferFrom(SortingMachine<T> source) Setsthisto the incoming value ofsource, and resetssourceto an initial value; the declaration notwithstanding, the dynamic type ofsourcemust be the same as the dynamic type ofthis.Methods inherited from class SortingMachineSecondary
equals, hashCode, toStringMethods inherited from interface Iterable
forEach, spliterator
-
Constructor Details
-
SortingMachine5
Constructor from order.- Parameters:
order- total preorder for sorting
-
-
Method Details
-
newInstance
Description copied from interface:StandardReturns a new object with the same dynamic type asthis, having an initial value. If the typeThas a no-argument constructor, then the value of the new returned object satisfies the contract of the no-argument constructor forT. IfTdoes not have a no-argument constructor, then the value of the new returned object satisfies the contract of the constructor call that was used to initializethis.- Returns:
- new object "like"
thiswith an initial value
-
clear
Description copied from interface:StandardResetsthisto an initial value. If the typeThas a no-argument constructor, thenthissatisfies the contract of the no-argument constructor forT. IfTdoes not have a no-argument constructor, thenthissatisfies the contract of the constructor call that was used to initialize#this. -
transferFrom
Description copied from interface:StandardSetsthisto the incoming value ofsource, and resetssourceto an initial value; the declaration notwithstanding, the dynamic type ofsourcemust be the same as the dynamic type ofthis. If the typeThas a no-argument constructor, thensourcesatisfies the contract of the no-argument constructor forT. IfTdoes not have a no-argument constructor, thensourcesatisfies the contract of the constructor call that was used to initialize#source.- Parameters:
source- object whose value is to be transferred
-
add
Description copied from interface:SortingMachineKernelAddsxto the contents ofthis.- Parameters:
x- the element to be added
-
changeToExtractionMode
Description copied from interface:SortingMachineKernelChanges the mode ofthisfrom insertion to extraction. -
removeFirst
Description copied from interface:SortingMachineKernelRemoves and returns some "first" ("smallest") entry from the contents ofthis.- Returns:
- the entry removed
-
isInInsertionMode
Description copied from interface:SortingMachineKernelReports whetherthisis in insertion mode.- Returns:
- true iff
thisis in insertion mode
-
order
Description copied from interface:SortingMachineKernelReportsComparatorbeing used for sorting bythis.- Returns:
- Comparator used for sorting
-
size
Description copied from interface:SortingMachineKernelReports the number of entries inthis.- Returns:
- the (multiset) size of
this.contents
-
iterator
-