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 List 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össeren Anzal 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]))
S
Description
ein Tool zur Simulation der verschiedenen Sortierverfahren in einer Anlage; picksort und tuplesort
Readme MIT 400 KiB
Languages
Python 100%