Files
m.stangl 1974e4501c „README.md“ ändern
Rechtsschreibfehler entfernt
2023-12-12 15:29:32 +00:00

2.1 KiB

SimulationTuplesort

ein Tool zur Simulation der verschiedenen Sortierverfahren in einer Anlage:

  • picksort und
  • tuplesort.

Picksort-Verfahren

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 Liste der Bügelträger

Zur Vermittelung der einzelnen Schritte wurden folgender Unittest umgesetzt:

    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

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ößeren Anzahl von Elementen im Kreisel eine bessere Sortierperformance.

Zur Vermittelung der einzelnen Schritte wurden folgender Unittest umgesetzt:

    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]))