- 论坛徽章:
- 0
|
本帖最后由 justu78 于 2013-07-27 17:27 编辑
我想比较若干个数组(数组的个数在程序运行中会变化),数组内容可能是字符串,可能是数字,不一定。 需要查看是否所有的数组完全一样,我写的子程序如下,有时数组会很大,所以我感觉效率不会高,想问下有没有更高效率的代码?
sub CompareArray{
use strict;
my(@array_ref)=@_;
my($i,$j,$k,@array,@array1,$number);
$number='[+-]?\d+[\.]?\d*[eE][+-]?\d+|[+-]?[\.]\d+[eE][+-]?\d+|[+-]?\d+[\.]?\d*|[+-]?[\.]\d+';
for($i=0;$i<=$#array_ref-1;$i++){
@array=@{$array_ref[$i]};
for($j=$i+1;$j<=$#array_ref;$j++){
@array1=@{$array_ref[$j]};
if($#array!=$#array1){
return(0);
}else{
for($k=0;$k<=$#array1;$k++){
if($array[$k]=~/^$number$/ && $array1[$k]=~/^$number$/){
if($array1[$k]!=$array[$k]){
return(0);
}
}elsif($array[$k]!~/^$number$/ && $array1[$k]!~/^$number$/){
if($array1[$k] ne $array[$k]){
return(0);
}
}else{
return(0);
}
}
}
}
}
return(1);
} |
|