php不用内置函数对数组排序的两个算法代码
php不用内置函数对数组排序的两个算法代码
发布时间:2016-12-29 来源:查字典编辑
摘要:一朋友找工作遇到的试题,备注一下。极有可能今后我也会遇到的。问题:php不用内置函数对数组排序,可能是降序或者升序第一种方法:传说中的冒泡法...

一朋友找工作遇到的试题,备注一下。

极有可能今后我也会遇到的。

问题:php不用内置函数对数组排序,可能是降序或者升序

第一种方法:传说中的冒泡法

复制代码 代码如下:

function arraysort($data, $order = 'asc') {

//asc升序 desc降序

$temp = array ();

$count = count ( $data );

if ($count <= 0)

return false; //传入的数据不正确

if ($order == 'asc') {

for($i = 0; $i < $count; $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;

}

}

}

} else {

for($i = 0; $i < $count; $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 ('<br>');

var_dump ( arraysort ( $data ,'desc') );//降序

第二种方法:不知道取个什么名字好,就叫插入法吧!囧

复制代码 代码如下:

function arraysort3($data, $order = 'asc') {

//目前只做升序排列

$count = count ( $data );

for($i = 1; $i < $count; $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教程学习
编程开发子分类