Package components.sortingmachine
Class SortingMachine5<T>
java.lang.Object
components.sortingmachine.SortingMachineSecondary<T>
components.sortingmachine.SortingMachine5<T>
- Type Parameters:
T
- type ofSortingMachine
entries
- 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
-
Method Summary
Modifier and TypeMethodDescriptionfinal void
Addsx
to the contents ofthis
.final void
Changes the mode ofthis
from insertion to extraction.final void
clear()
Resetsthis
to an initial value.final boolean
Reports whetherthis
is 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()
ReportsComparator
being used for sorting bythis
.final T
Removes and returns some "first" ("smallest") entry from the contents ofthis
.final int
size()
Reports the number of entries inthis
.final void
transferFrom
(SortingMachine<T> source) Setsthis
to the incoming value ofsource
, and resetssource
to an initial value; the declaration notwithstanding, the dynamic type ofsource
must be the same as the dynamic type ofthis
.Methods inherited from class components.sortingmachine.SortingMachineSecondary
equals, hashCode, toString
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
Methods inherited from interface java.lang.Iterable
forEach, spliterator
-
Constructor Details
-
SortingMachine5
Constructor from order.- Parameters:
order
- total preorder for sorting
-
-
Method Details
-
newInstance
Description copied from interface:Standard
Returns a new object with the same dynamic type asthis
, having an initial value. If the typeT
has a no-argument constructor, then the value of the new returned object satisfies the contract of the no-argument constructor forT
. IfT
does 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"
this
with an initial value
-
clear
Description copied from interface:Standard
Resetsthis
to an initial value. If the typeT
has a no-argument constructor, thenthis
satisfies the contract of the no-argument constructor forT
. IfT
does not have a no-argument constructor, thenthis
satisfies the contract of the constructor call that was used to initialize#this
. -
transferFrom
Description copied from interface:Standard
Setsthis
to the incoming value ofsource
, and resetssource
to an initial value; the declaration notwithstanding, the dynamic type ofsource
must be the same as the dynamic type ofthis
. If the typeT
has a no-argument constructor, thensource
satisfies the contract of the no-argument constructor forT
. IfT
does not have a no-argument constructor, thensource
satisfies 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:SortingMachineKernel
Addsx
to the contents ofthis
.- Parameters:
x
- the element to be added
-
changeToExtractionMode
Description copied from interface:SortingMachineKernel
Changes the mode ofthis
from insertion to extraction. -
removeFirst
Description copied from interface:SortingMachineKernel
Removes and returns some "first" ("smallest") entry from the contents ofthis
.- Returns:
- the entry removed
-
isInInsertionMode
Description copied from interface:SortingMachineKernel
Reports whetherthis
is in insertion mode.- Returns:
- true iff
this
is in insertion mode
-
order
Description copied from interface:SortingMachineKernel
ReportsComparator
being used for sorting bythis
.- Returns:
- Comparator used for sorting
-
size
Description copied from interface:SortingMachineKernel
Reports the number of entries inthis
.- Returns:
- the (multiset) size of
this.contents
-
iterator
-