我正在创建一个基本的冒泡排序,但我不明白为什么会收到此错误,在第10行使用数字lt(<)中的未初始化值。
#!/usr/bin/perl -w
use strict;
use warnings;
my @nums = (7,3,5,8,5,2,3,5,7,3,5);
my $length = @nums;
for(my $i = 0; $i < $length; $i++){
for(my $j = 0; $j < $length; $j++){
if($nums[$j] lt $nums[$j+1]){
my $temp = $nums[$j];
$nums[$j] = $nums[$j+1];
$nums[$j+1] = $temp;
}
}
}
如果比较,似乎有问题。我确保使用这些值正确初始化了我的数组,并且它们确实是。如果我在for循环之前打印这些值,则它们可以正常打印并进行初始化。
我想我只是想念一些非常简单的东西,但老实说我迷路了。
答案 0 :(得分:1)
在您的内部循环中,$j
循环到$length-1
。此时,$nums[$j]
是数组的最后一个元素。然后将其与不存在的$nums[$j+1]
进行比较。