一朋友找工作遇到的试题,备注一下。
极有可能今后我也会遇到的。
问题:php不用内置函数对数组排序,可能是降序或者升序
第一种方法:传说中的冒泡法
复制代码代码如下:
functionarraysort($data,$order='asc'){
//asc升序desc降序
$temp=array();
$count=count($data);
if($count<=0)
returnfalse;//传入的数据不正确
if($order=='asc'){
for($i=0;$i
for($j=$count-1;$j>$i;$j--){
if($data[$j]
//交换两个数据的位置
$temp=$data[$j];
$data[$j]=$data[$j-1];
$data[$j-1]=$temp;
}
}
}
}else{
for($i=0;$i
for($j=$count-1;$j>$i;$j--){
if($data[$j]>$data[$j-1]){
$temp=$data[$j];
$data[$j]=$data[$j-1];
$data[$j-1]=$temp;
}
}
}
}
return$data;
}
$data=array(7,5,3,8,9,1,5,3,1,24,3,87,0,33,1,12,34,54,66,32);
var_dump(arraysort($data));//升序
echo('
');
var_dump(arraysort($data,'desc'));//降序
第二种方法:不知道取个什么名字好,就叫插入法吧!囧
复制代码代码如下:
functionarraysort3($data,$order='asc'){
//目前只做升序排列
$count=count($data);
for($i=1;$i
$temp=$data[$i];
$j=$i-1;
while($data[$j]>$temp){
$data[$j+1]=$data[$j];
$data[$j]=$temp;
$j--;//为什么要递减:从高位逐位判断
}
}
return$data;
}
$data=array(7,5,3,8,9,1,5,3,1,24,3,87,0,33,1,12,34,54,66,32);
var_dump(arraysort3($data));//升序
您可能感兴趣的文章:PHP数组排序方法总结推荐收藏php中二维数组排序问题方法详解array_multisort实现PHP多维数组排序示例讲解php简单实现多维数组排序的方法PHP冒泡排序二分查找顺序查找二维数组排序算法函数的详解php数组排序array_multisort与uasort的区别php关于array_multisort多维数组排序的使用说明PHP数组排序之sort、asort与ksort用法实例PHP简单数组排序实现代码PHP常见数组排序方法小结