php实现排序员工信息,PHP实现常见排序

下面是有php实现的几种排序,有一次面试的时候也碰到过,在此写下,方便以后使用:header('Content-type:text/html;charset=utf-8');

define('MAXNUM', 10);

$arr = array();

echo '排序之前:
';

for ($i = 0; $i 

echo ($arr[] = rand(0, 100)) . '   ';

}

selSort($arr);

insertSort($arr);

bubSort($arr);

shakerSort($arr);

echo '
快速排序:
';

$quickSortRes = quickSort($arr);

for ($k = 0; $k 

echo $quickSortRes[$k] . '   ';

}

function selSort($arr)

{

echo '
选择排序:';

for ($i = 0; $i 

$m = $i;

for ($j = $i + 1; $j 

$arr[$m] > $arr[$j] && $m = $j;

}

$m != $i && swap($arr[$i], $arr[$m]);

echo '
第'. ($i + 1) . '次排序结果:';

for ($k = 0; $k 

echo $arr[$k] . '   ';

}

}

}

function insertSort($arr)

{

echo '
插入排序:';

for ($j = 1; $j 

$t = $arr[$j];

//for ($i = $j - 1; $i > -1; $i--) {

//    if ($t > $arr[$i]) {

//        $arr[$i + 1] = $t;

//        break;

//    }else{

//        $arr[$i + 1] = $arr[$i];

//        $arr[$i] = $t;

//    }

//}

$i = $j - 1;

while ($t 

$arr[$i + 1] = $arr[$i];

$i --;

if ($i 

}

$arr[$i + 1] = $t;

echo '
第'. $j . '次排序结果:';

for ($k = 0; $k 

echo $arr[$k] . '   ';

}

}

}

function bubSort($arr)

{

echo '
冒泡排序:';

$flag = 1;

for ($i = 0; $i 

$flag = 0;

for ($j = 0; $j 

if ($arr[$j + 1] 

swap($arr[$j + 1], $arr[$j]);

$flag = 1;

}

}

echo '
第'. ($i + 1) . '次排序结果:';

for ($k = 0; $k 

echo $arr[$k] . '   ';

}

}

}

function shakerSort($arr)

{

echo '
Shaker排序(双向冒泡排序):';

$left = $shift = $num = 0;

$right = MAXNUM - 1;

while ($left 

for ($i = 0; $i 

if ($arr[$i] > $arr[$i + 1]) {

swap($arr[$i], $arr[$i + 1]);

$shift = $i;

}

}

$right = $shift;

for ($j = $right; $j > $left; $j--) {

if ($arr[$j - 1] > $arr[$j]) {

swap($arr[$j - 1], $arr[$j]);

$shift = $j;

}

}

$left = $shift;

echo '
第'. (++$num) . '次排序结果:';

for ($k = 0; $k 

echo $arr[$k] . '   ';

}

}

}

function quickSort($arr)

{

if (count($arr) <= 1) return $arr;

$key = $arr[0];

$left_arr = array();

$right_arr = array();

for ($i = 1; $i 

if ($arr[$i] <= $key) $left_arr[] = $arr[$i];

else   $right_arr[] = $arr[$i];

}

$left_arr = quickSort($left_arr);

$right_arr = quickSort($right_arr);

return array_merge($left_arr, array($key), $right_arr);

}

function swap(&$a, &$b)

{

$t = $a;

$a = $b;

$b = $t;

}

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值