The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

SPVM::Sort - Sorting Functions

SYNOPSYS

  # Sort a byte array in-place by asc order
  my $nums = [(byte)2, 3, 1];
  Sort->sort_byte($nums, 0, scalar @$nums, method : int ($a : byte, $b : byte) {
    return $a <=> $b;
  });

  # Sort short array in-place by asc order
  my $nums = [(short)2, 3, 1];
  Sort->sort_short($nums, 0, scalar @$nums, method : int ($a : short, $b : short) {
    return $a <=> $b;
  });

  # Sort int array in-place by asc order
  my $nums = [2, 3, 1];
  Sort->sort_int($nums, 0, scalar @$nums, method : int ($a : int, $b : int) {
    return $a <=> $b;
  });

  # Sort long array in-place by asc order
  my $nums = [(long)2, 3, 1];
  Sort->sort_long($nums, 0, scalar @$nums, method : int ($a : long, $b : long) {
    return $a <=> $b;
  });

  # Sort float array in-place by asc order
  my $nums = [(float)2, 3, 1];
  Sort->sort_float($nums, 0, scalar @$nums, method : int ($a : float, $b : float) {
    return $a <=> $b;
  });

  # Sort double array in-place by asc order
  my $nums = [(double)2, 3, 1];
  Sort->sort_double($nums, 0, scalar @$nums, method : int ($a : double, $b : double) {
    return $a <=> $b;
  });

  # Sort string array in-place by asc order
  my $nums = ["11", "1", "2", undef, ""];
  Sort->sort_string($nums, 0, scalar @$nums, method : int ($a : string, $b : string) {
    return $a cmp $b;
  });

  # Sort object array in-place by asc order
  my $minimals = new TestCase::Minimal[3];
  $minimals->[0] = TestCase::Minimal->new;
  $minimals->[0]{x} = 3;
  $minimals->[0]{y} = 5;
  $minimals->[1] = TestCase::Minimal->new;
  $minimals->[1]{x} = 3;
  $minimals->[1]{y} = 7;
  $minimals->[2] = TestCase::Minimal->new;
  $minimals->[2]{x} = 2;
  $minimals->[2]{y} = 9;
  Sort->sort_object($minimals, 0, scalar @$minimals, method : int ($object1 : object, $object2 : object) {
    my $minimal1 = (TestCase::Minimal)$object1;
    my $minimal2 = (TestCase::Minimal)$object2;
    
    return $minimal1->{x} <=> $minimal2->{x} || $minimal1->{y} <=> $minimal2->{y};
  };

DESCRIPTION

Sort provides sorting functions. The sorting algorithm is a stable merge sort.

Class Methods

sort_byte

    static method sort_byte : void ($values : byte[], $offset : int, $length : int, $comparator : Comparator::Byte)

Sort the elements of byte array in-place with the offset, the length, and the Comparator::Byte comparator.

The values must be defined. Otherwise an exception will be thrown.

The offset must be more than or equal to 0. Otherwise an exception will be thrown.

The length must be more than or equal to 0. Otherwise an exception will be thrown.

The offset + length must be less than or equal to the length of the values. Otherwise an exception will be thrown.

sort_byte_asc

  static method sort_byte_asc : void ($values : byte[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_byte($values, $offset, $length, method : int ($a : byte, $b : byte) { return $a <=> $b; });

sort_byte_desc

  static method sort_byte_desc : void ($values : byte[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_byte($values, $offset, $length, method : int ($a : byte, $b : byte) { return $b <=> $a; });

sort_double

    static method sort_double : void ($values : double[], $offset : int, $length : int, $comparator : Comparator::Double)

Sort the elements of double array in-place with the offset, the length, and the Comparator::Double comparator.

The values must be defined. Otherwise an exception will be thrown.

The offset must be more than or equal to 0. Otherwise an exception will be thrown.

The length must be more than or equal to 0. Otherwise an exception will be thrown.

The offset + length must be less than or equal to the length of the values. Otherwise an exception will be thrown.

sort_double_asc

  static method sort_double_asc : void ($values : double[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_double($values, $offset, $length, method : int ($a : double, $b : double) { return $a <=> $b; });

sort_double_desc

  static method sort_double_desc : void ($values : double[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_double($values, $offset, $length, method : int ($a : double, $b : double) { return $b <=> $a; });

sort_float

    static method static method sort_float : void ($values : float[], $offset : int, $length : int, $comparator : Comparator::Float)

Sort the elements of float array in-place with the offset, the length, and the Comparator::Float comparator.

The values must be defined. Otherwise an exception will be thrown.

The offset must be more than or equal to 0. Otherwise an exception will be thrown.

The length must be more than or equal to 0. Otherwise an exception will be thrown.

The offset + length must be less than or equal to the length of the values. Otherwise an exception will be thrown.

sort_float_asc

  static method sort_float_asc : void ($values : float[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_float($values, $offset, $length, method : int ($a : float, $b : float) { return $a <=> $b; });

sort_float_desc

  static method sort_float_desc : void ($values : float[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_float($values, $offset, $length, method : int ($a : float, $b : float) { return $b <=> $a; });

sort_int

    static method sort_int : void ($values : int[], $offset : int, $length : int, $comparator : Comparator::Int)

Sort the elements of int array in-place with the offset, the length, and the Comparator::Int comparator.

The values must be defined. Otherwise an exception will be thrown.

The offset must be more than or equal to 0. Otherwise an exception will be thrown.

The length must be more than or equal to 0. Otherwise an exception will be thrown.

The offset + length must be less than or equal to the length of the values. Otherwise an exception will be thrown.

sort_int_asc

  static method sort_int_asc : void ($values : int[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_int($values, $offset, $length, method : int ($a : int, $b : int) { return $a <=> $b; });

sort_int_desc

  static method sort_int_desc : void ($values : int[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_int($values, $offset, $length, method : int ($a : int, $b : int) { return $b <=> $a; });

sort_long

    static method sort_long : void ($values : long[], $offset : int, $length : int, $comparator : Comparator::Long)

Sort the elements of long array in-place with the offset, the length, and the Comparator::Long comparator.

The values must be defined. Otherwise an exception will be thrown.

The offset must be more than or equal to 0. Otherwise an exception will be thrown.

The length must be more than or equal to 0. Otherwise an exception will be thrown.

The offset + length must be less than or equal to the length of the values. Otherwise an exception will be thrown.

sort_long_asc

  static method sort_long_asc : void ($values : long[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_long($values, $offset, $length, method : int ($a : long, $b : long) { return $a <=> $b; });

sort_long_desc

  static method sort_long_desc : void ($values : long[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_long($values, $offset, $length, method : int ($a : long, $b : long) { return $b <=> $a; });

sort_object

    static method sort_object : void ($objs : object[], $offset : int, $length : int, $comparator : Comparator)

Sort the elements of object array in-place with the offset, the length, and the Comparator comparator.

The values must be defined. Otherwise an exception will be thrown.

The offset must be more than or equal to 0. Otherwise an exception will be thrown.

The length must be more than or equal to 0. Otherwise an exception will be thrown.

The offset + length must be less than or equal to the length of the values. Otherwise an exception will be thrown.

sort_short

    static method sort_short : void ($values : short[], $offset : int, $length : int, $comparator : Comparator::Short)

Sort the elements of short array in-place with the offset, the length, and the Comparator::Short comparator.

The values must be defined. Otherwise an exception will be thrown.

The offset must be more than or equal to 0. Otherwise an exception will be thrown.

The length must be more than or equal to 0. Otherwise an exception will be thrown.

The offset + length must be less than or equal to the length of the values. Otherwise an exception will be thrown.

sort_short_asc

  static method sort_short_asc : void ($values : short[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_short($values, $offset, $length, method : int ($a : short, $b : short) { return $a <=> $b; });

sort_short_desc

  static method sort_short_desc : void ($values : short[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_short($values, $offset, $length, method : int ($a : short, $b : short) { return $b <=> $a; });

sort_string

    static method sort_string : void ($values : string[], $offset : int, $length : int, $comparator : Comparator::Double)

Sort the elements of string array in-place with the offset, the length, and the Comparator::String comparator.

The values must be defined. Otherwise an exception will be thrown.

The offset must be more than or equal to 0. Otherwise an exception will be thrown.

The length must be more than or equal to 0. Otherwise an exception will be thrown.

The offset + length must be less than or equal to the length of the values. Otherwise an exception will be thrown.

sort_string_asc

  static method sort_string_asc : void ($values : string[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_string($values, $offset, $length, method : int ($a : string, $b : string) { return $a cmp $b; });

sort_string_desc

  static method sort_string_desc : void ($values : string[], $offset : int, $length : int)

Alias for the following code.

  Sort->sort_string($values, $offset, $length, method : int ($a : string, $b : string) { return $b cmp $a; });