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]);