Docu ergänzt und Python aktualisiert
This commit is contained in:
@@ -1,3 +1,57 @@
|
||||
# SimulationTuplesort
|
||||
|
||||
ein Tool zur Simulation der verschiedenen Sortierverfahren in einer Anlage; picksort und tuplesort
|
||||
ein Tool zur Simulation der verschiedenen Sortierverfahren in einer Anlage:
|
||||
- picksort und
|
||||
- tuplesort.
|
||||
|
||||
## Picksort-Verfahren
|
||||

|
||||
|
||||
|
||||
|
||||
Das Picksort Verfahren holt sich bei jeder Umdrehung das kleinstmögliche Objekt aus dem ersten Kreisel heraus. Daraus ergibt sich im zweiten Kreisel eine sortierte List der Bügelträger
|
||||
|
||||
Zur Vermittelung der einzelnen Schritte wurden folgender Unittest umgesetzt:
|
||||
|
||||
```python
|
||||
lK = Roundabout()
|
||||
lK.addList([6, 5, 4, 3, 2, 1])
|
||||
rK = Roundabout(1)
|
||||
sw = Switch(lK, rK)
|
||||
p = RoundaboutPair(lK, rK, sw)
|
||||
self.assertEqual(lK.content(), [1, 2, 3, 4, 5, 6])
|
||||
|
||||
p.runSimulation()
|
||||
self.assertEqual(p.show(), ([], [1, 2, 3, 4, 5, 6]))
|
||||
```
|
||||
## Tuplesort-Verfahren
|
||||

|
||||
|
||||
Das Tupelsort Verfahren arbeitet mit sog. Tupels. Dies sind Zahlenfolge die immer Aufsteigend sind.
|
||||
Eine Zahlenfolge wie z.B. 1, 3, 5, 10, 2, 4, 7, 5, 8 kann in 3 Tupels unterteilt werden. Immer wenn sich in den Zahlen ein Sprung nach unten befindet definiert man ein Tupelende. Aus dieser Zahlenfolge ergeben sich beispielsweise die 3 Tuple 1,3, 5, 10 | 2, 4, 7 | 5, 8 .
|
||||
Durch zusammenfügen der Einzeltupel ergibt sich am Ende eine sortierte folge.
|
||||
Das Tupelsort verfahren hat bei einer grösseren Anzal von Elementen im Kreisel eine bessere Sortierperformance.
|
||||
|
||||
Zur Vermittelung der einzelnen Schritte wurden folgender Unittest umgesetzt:
|
||||
|
||||
```python
|
||||
lK = Roundabout()
|
||||
lK.addList([3, 2, 1])
|
||||
rK = Roundabout(1)
|
||||
rK.addList([6, 5, 4])
|
||||
sw = Switch(lK, rK)
|
||||
p = RoundaboutPair(lK, rK, sw)
|
||||
sw.set_to_right()
|
||||
self.assertEqual(p.show(), ([1, 2, 3], [6, 5, 4]))
|
||||
|
||||
p.sortStepTupleSort()
|
||||
self.assertEqual(p.show(), ([1, 2], [5, 4, 3, 6]))
|
||||
p.sortStepTupleSort()
|
||||
self.assertEqual(p.show(), ([5, 2, 1], [4, 3, 6]))
|
||||
p.sortStepTupleSort()
|
||||
self.assertEqual(p.show(), ([5, 2], [3, 6, 1, 4]))
|
||||
p.sortStepTupleSort()
|
||||
self.assertEqual(p.show(), ([6, 5, 3, 2], [1, 4]))
|
||||
p.sortStepTupleSort()
|
||||
self.assertEqual(p.show(), ([], [1, 2, 3, 4, 5, 6]))
|
||||
```
|
||||
|
||||
Reference in New Issue
Block a user