php实现排序算法,常见排序算法(PHP实现)

function InsertSort($arr){

$num = count($arr);

for($i = 1; $i < $num; $i++){

$key = $arr[$i];

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

if($arr[$j] > $key){

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

$arr[$j] = $key;

}

}

}

return $arr;

}

function BubbleSort($arr){

$num = count($arr);

for( $i = 1; $i < $num; $i++ ){

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

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

$tmp_val = $arr[$j - 1];

$arr[$j - 1] = $arr[$j];

$arr[$j] = $tmp_val;

}

}

}

return $arr;

}

function BucketSort($arr){

$bucket = array();

$idx = 0;

foreach ($arr as $value) {

if(!is_int($value)) continue;

$bucket[$value] = $value;

if($value > $idx) $idx = $value;

}

$rst = array();

for($i = 0; $i <= $idx; $i++){

if(isset($bucket[$i])){

$rst[] = $bucket[$i];

}

}

return $rst;

}

function ExchangeSort($arr){

$num = count($arr);

for($i = 0; $i < $num -1; $i++){

for($j = $i + 1; $j < $num; $j++){

if($arr[$i] > $arr[$j]){

$tmp = $arr[$i];

$arr[$i] = $arr[$j];

$arr[$j] = $tmp;

}

}

}

return $arr;

}

function QuickSort($arr){

$num = count($arr);

$l_num = $r_num = 0;

$left = $right = array();

for($i = 1; $i < $num; $i++){

if($arr[$i] >= $arr[0]){

$right[] = $arr[$i];

$r_num++;

}else{

$left[] = $arr[$i];

$l_num++;

}

}

if($l_num > 1){

$left = QuickSort($left);

}

$left[] = $arr[0];

if($r_num > 1){

$right = QuickSort($right);

}

for($i = 0; $i < $r_num; $i++){

$left[] = $right[$i];

}

return $left;

}

function PigeonholeSort($arr){

$pigeonhole = array();

foreach ($arr as $value) {

if(!is_int($value)) continue;

if(isset($pigeonhole[$value]))

$pigeonhole[$value]++;

else

$pigeonhole[$value] = 0;

}

$rst = array();

$i = 0;

while($pigeonhole[$i]){

for($j = 0; $j < $pigeonhole[$i]; $j++){

$rst[] = $i;

}

$i++;

}

return $rst;

}

常见排序算法&lpar;附java代码&rpar;

常见排序算法与java实现 一.选择排序(SelectSort) 基本原理:对于给定的一组记录,经过第一轮比较后得到最小的记录,然后将该记录与第一个记录的位置进行交换:接着对不包括第一个记录以外的其他 ...

JS常见排序算法

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值