Perl最快的排序算法

时间:2014-09-09 18:27:59

标签: perl

我正在尝试在Perl中找到最快的排序算法。搜索cpan我找到了Algorithm::Sorting 模块。我在下面尝试了一个简单的代码,找出哪种是最好的排序算法,但每次更改数据列表时结果都会有所不同。此模块也不支持Merge,Heap和Quick3排序,这些也很重要。

#!/usr/bin/perl

use Algorithm::Sorting;
use Benchmark qw(:all);

my @list = (int rand(1000_000)) x 10000;

my @sorts = qw(BubbleSort ShakerSort SelectionSort InsertionSort ShellSort QuickSort);
#Algorithm: Bubble Heap Insertion Merge Quick Quick3 Selection Shell

#my @test = @list;
#BubbleSort(@test);
#print "@test\n";

cmpthese (10, {
    BubbleSort    => sub { BubbleSort([@list]) },
    ShakerSort    => sub { ShakerSort([@list]) },
    SelectionSort => sub { SelectionSort([@list]) },
    InsertionSort => sub { InsertionSort([@list]) },
    ShellSort     => sub { ShellSort([@list]) },
    QuickSort     => sub { QuickSort([@list]) },
});

以下是基准测试结果:

                     Rate BubbleSort SelectionSort QuickSort ShellSort InsertionSort ShakerSort
BubbleSort    7.09e-002/s         --          -30%      -99%     -100%         -100%      -100%
SelectionSort     0.102/s        43%            --      -99%     -100%         -100%      -100%
QuickSort          10.5/s     14707%        10247%        --      -54%          -79%       -80%
ShellSort          22.9/s     32157%        22440%      118%        --          -54%       -57%
InsertionSort      49.3/s     69339%        48422%      369%      115%            --        -8%
ShakerSort         53.5/s     75281%        52573%      409%      134%            9%         --

Output completed (4 min 1 sec consumed)

0 个答案:

没有答案