<?php
$arr = [1,2,3,4,5,6,7,8,9];
heapsort($arr);
var_dump($arr);
$arr = [9,8,7,6,5,4,3,2,1];
heapsort($arr);
var_dump($arr);
$arr = [0,1,2,3,4,5,6,7,8,9,10,11,12,13];
var_dump(big5($arr));
function big5($arr) {
$heapsize = count($arr);
for ($i = intval($n - 2) / 2; $i >= 0; $i--) {
heapify($arr, $i, $heapsize);
}
for ($i = 0; $i < 5; $i++) {
heapify($arr, $i, $heapsize);
}
return $arr[4];
}
function heapsort(&$arr) {
$heapsize = count($arr);
// build heap
for ($i = intval(($heapsize - 2) / 2); $i >= 0; $i--) {
heapify($arr, $i, $heapsize);
}
// heap sort
for ($heapsize = $heapsize - 1; $heapsize > 0; $heapsize--) {
swap($arr[0], $arr[$heapsize]);
heapify($arr, 0, $heapsize);
}
}
function heapify(&$arr, $i, $heapsize) {
while (true) {
$l = 2 * $i + 1;
$r = 2 * $i + 2;
$largest = $i;
if ($l < $heapsize && $arr[$largest] < $arr[$l]) {
$largest = $l;
}
if ($r < $heapsize && $arr[$largest] < $arr[$r]) {
$largest = $r;
}
if ($largest == $i) {
break;
}
swap($arr[$i], $arr[$largest]);
$i = $largest;
}
}
function heapify_recursively(&$arr, $i, $heapsize) {
$l = 2 * $i + 1;
$r = 2 * $i + 2;
$largest = $i;
if ($l < $heapsize && $arr[$largest] < $arr[$l]) {
$largest = $l;
}
if ($r < $heapsize && $arr[$largest] < $arr[$r]) {
$largest = $r;
}
if ($largest != $i) {
swap($arr[$i], $arr[$largest]);
heapify($arr, $largest, $heapsize);
}
}
function swap(&$a, &$b) {
list($a, $b) = [$b, $a];
}
- Output for 8.0.0 - 8.0.30, 8.1.0 - 8.1.28, 8.2.0 - 8.2.18, 8.3.0 - 8.3.4, 8.3.6
- array(9) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
}
array(9) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
}
Warning: Undefined variable $n in /in/IPFRE on line 15
int(10)
- Output for 8.3.5
- Warning: PHP Startup: Unable to load dynamic library 'sodium.so' (tried: /usr/lib/php/8.3.5/modules/sodium.so (libsodium.so.23: cannot open shared object file: No such file or directory), /usr/lib/php/8.3.5/modules/sodium.so.so (/usr/lib/php/8.3.5/modules/sodium.so.so: cannot open shared object file: No such file or directory)) in Unknown on line 0
array(9) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
}
array(9) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
}
Warning: Undefined variable $n in /in/IPFRE on line 15
int(10)
- Output for 5.6.0 - 5.6.40, 7.0.0 - 7.0.33, 7.1.0 - 7.1.33, 7.2.0 - 7.2.33, 7.3.0 - 7.3.31, 7.4.0 - 7.4.33
- array(9) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
}
array(9) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
}
Notice: Undefined variable: n in /in/IPFRE on line 15
int(10)
- Output for 7.3.32 - 7.3.33
- array(9) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
}
array(9) {
[0]=>
int(1)
[1]=>
int(2)
[2]=>
int(3)
[3]=>
int(4)
[4]=>
int(5)
[5]=>
int(6)
[6]=>
int(7)
[7]=>
int(8)
[8]=>
int(9)
}
int(10)
preferences:
217.12 ms | 402 KiB | 291 Q