rnix/bubble-sorter

一个过度设计的冒泡排序实现

dev-master 2019-02-12 14:26 UTC

This package is auto-updated.

Last update: 2024-09-13 02:53:58 UTC


README

一个可以使用冒泡排序对项目进行排序的库。使用面向对象编程、SOLID原则和热爱编写。

Build Status

排序

$floatsToSort = [5, 8, 3, 12, 3];

$comparer = new \BubbleSorter\Comparer\FloatComparer();
$floatItemsCreator = new \BubbleSorter\Item\Creator\FloatCreator();
$floatItemsFromListCreator = new \BubbleSorter\Item\Creator\FloatsFromListCreator($floatItemsCreator);
$items = $floatItemsFromListCreator->createFromList(...$floatsToSort);

$collection = new \BubbleSorter\Collection\Collection(...$items);

$indexesGeneratorFactory = new \BubbleSorter\Generator\Factory\IndexesGeneratorFactory();
$indexesGeneratorBuilder = new \BubbleSorter\Generator\Builder\Builder($indexesGeneratorFactory);
$comparer = new \BubbleSorter\Comparer\FloatComparer();
$swapper = new \BubbleSorter\Swapper\Swapper();
$sorter = new \BubbleSorter\Sorter\Sorter($indexesGeneratorBuilder, $comparer, $swapper);
$sortedCollection = $sorter->sort($collection);

$itemsGeneratorFactory = new \BubbleSorter\Generator\Factory\ItemsGeneratorFactory();
$itemsGeneratorBuilder = new \BubbleSorter\Generator\Builder\Builder($itemsGeneratorFactory);
$extractor = new \BubbleSorter\Item\Extractor\FloatsToArrayExtractor($itemsGeneratorBuilder);
$sortedFloats = $extractor->extract($sortedCollection);

print_r($sortedFloats);

输出

Array
(
    [0] => 3
    [1] => 3
    [2] => 5
    [3] => 8
    [4] => 12
)

请参阅 example 目录中的示例。

测试

工作正在进行中。

许可证

MIT许可证