#!/usr/bin/perl

# Bubble Sort, Program Source Code, Perl Implementation #1
# Sort A List Of Out-Of-Order Integers
# The Open Benchmarks Group
# http://openbenchmarks.org

# Contributed In Perl By Will Braswell

# $ ./script/demo/bubble_sort.pl 5000
# time total:   15.488 seconds
# $ rperl ./lib/RPerl/Algorithm/Sort/Bubble.pm
# $ ./script/demo/bubble_sort.pl 5000
# time total:   0.050 seconds

# [[[ HEADER ]]]
use RPerl;
use strict;
use warnings;
our $VERSION = 0.001_000;

# [[[ CRITICS ]]]
## no critic qw(ProhibitUselessNoCritic ProhibitMagicNumbers RequireCheckedSyscalls)  # USER DEFAULT 1: allow numeric values & print operator

# [[[ INCLUDES ]]]
use RPerl::Algorithm::Sort::Bubble;
use Time::HiRes qw(time);
use rperltypesconv;

# [[[ OPERATIONS ]]]

my integer $number_of_integers = 5_000;  # default
#my integer $number_of_integers = 500;
if (defined $ARGV[0]) { $number_of_integers = string_to_integer($ARGV[0]); }  # user input, command-line argument

my $a = [reverse 0 .. $number_of_integers];
my number $time_start = time();

my $s = RPerl::Algorithm::Sort::Bubble::integer_bubblesort($a);

my number $time_total = time() - $time_start;
print Dumper($s);
print 'time total:   ' . $time_total . ' seconds' . "\n";