您的位置:首页 > 职场人生

PHP百度面试题:版本号排序

2014-02-25 13:40 585 查看
$a = "111.101.202.1.0";
$b = "111.101.202.1.1";
$va = explode('.', $a);
$vb = explode('.', $b);
//比较函数
function comparefun($va,$vb){
$a = array_shift($va);
$b = array_shift($vb);
if($a>$b){
echo '前者版本高';
return 0;
}elseif($a<$b){
echo '后者版本高';
return 0;
}else{
return comparefun($va,$vb);
}
}
comparefun($va,$vb);


然后怎么排序呢?似乎面试的最后都是排序题

做一个简单的冒泡排序:
$versionArr=array(
"111.101.202.1.0",
"111.101.202.1.1",
"112.101.202.1.1",
"111.103.202.1.1",
"111.103.201.0.1"
);

//比较函数
function comparefun($va,$vb){
$a = array_shift($va);
$b = array_shift($vb);
if($a>$b){
return 1;
}elseif($a<$b){
return 0;
}else{
return comparefun($va,$vb);
}
}

array_walk($versionArr, function(&$value){
$value = explode('.', $value);
});

for($i=0;$i<count($versionArr)-1;$i++ ){
for($j=0;$j<count($versionArr)-1-$i;$j++){
if(comparefun($versionArr[$j],$versionArr[$j+1])){
$tmp = $versionArr[$j];
$versionArr[$j] = $versionArr[$j+1];
$versionArr[$j+1] = $tmp;
}
}
}

array_walk($versionArr, function(&$value){
$value = implode('.', $value);
});

var_dump($versionArr);
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: