Wait the light to fall

Raku 中的选择排序

焉知非鱼
sub find-smallest(@arr) {
    my $smallest = @arr[0];
    my $smallest_index = 0;
    for @arr.kv -> $k, $v {
        if $v < $smallest {
            $smallest = $v;       # 存储最小的值
            $smallest_index = $k; # 存储最小元素的索引
        }
    }
    return $smallest_index
}

sub selection-sort(@arr) {
    my @new-arr = [];

    for @arr.clone.kv -> $k, $v {                             # 对数组进行排序
        my $smallest_index = find-smallest(@arr);
        @new-arr.append(@arr.splice($smallest_index,1).head); # 找出数组中最小的元素,并将其加入到新数组中
    }
    return @new-arr
}

say selection-sort([5, 3, 6, 2, 10]);