php各种排序算法,OI.share

$arr = array(49, 38, 65, 97, 76, 13, 27, 49);

echo 'original_arr: '; print_r($arr);

//插入排序

function insertSort($arr) {

$count = count($arr);

for ($i=1; $i

$tmp = $arr[$i];

$j = $i - 1;

while ($j >= 0 && $arr[$j] > $tmp) {

list($arr[$j+1], $arr[$j]) = array($arr[$j], $tmp);

$j--;

}

}

return $arr;

}

echo 'insertSort: '; print_r(insertSort($arr));

//选择排序

function selectSort($arr) {

$count = count($arr);

for ($i=0; $i

$k = $i;

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

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

$k = $j;

}

}

if ($i != $k) {

list($arr[$i], $arr[$k]) = array($arr[$k], $arr[$i]);

}

}

return $arr;

}

echo 'selectSort: '; print_r(selectSort($arr));

//冒泡排序

function bubbleSort($arr) {

$count = count($arr);

for ($i=0; $i

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

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

list($arr[$j], $arr[$j-1]) = array($arr[$j-1], $arr[$j]);

}

}

}

return $arr;

}

echo 'bubbleSort: '; print_r(bubbleSort($arr));

//快速排序

function quickSort($arr) {

$count = count($arr);

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

$key = $arr[0];

$left = $right = array();

for($i=1; $i

if ($arr[$i] <= $key) {

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

} else {

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

}

}

$left =  quickSort($left);

$right = quickSort($right);

return array_merge($left, array($key), $right);

}

echo 'quickSort: '; print_r(quickSort($arr));

//希尔排序

function shellSort($arr) {

$count = count($arr);

for ($inc=intval($count/2); $inc>0; $inc=intval($inc/2)) {

for ($i=$inc; $i

$tmp = $arr[$i];

for ($j=$i; $j>=$inc; $j-=$inc) {

if ($tmp < $arr[$j-$inc]) {

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

} else {

break;

}

$arr[$j] = $tmp;

}

}

}

return $arr;

}

echo 'shellSort: '; print_r(shellSort($arr));

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值