Hulp met Binary Search aub
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
<?php
$numbers = array(0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144);
$value = $_POST['value'];
function binary_search($numbers,$value){
sort($numbers);
$left = 0;
$right = count($numbers)-1;
$result = false;
while ($left <= $right && !$result){
$mid = ($left + $right)/2; // het probleem zit hem in deze regel, $mid = ($left+$right)>>1 werkt wel
if ($numbers[$mid] == $value){
echo "$numbers[$mid] komt voor in de array";
$result = true;
} elseif ($numbers[$mid] < $value){
$left = $mid +1;
} else {
$right = $mid -1;
}
}
if (!$result){
echo "Het getal komt niet voor in de array";
}
}
echo binary_search($numbers,$value);
echo "<br><br>";
sort($numbers);
print_r($numbers);
?>
$numbers = array(0, 1, 2, 3, 5, 8, 13, 21, 34, 55, 89, 144);
$value = $_POST['value'];
function binary_search($numbers,$value){
sort($numbers);
$left = 0;
$right = count($numbers)-1;
$result = false;
while ($left <= $right && !$result){
$mid = ($left + $right)/2; // het probleem zit hem in deze regel, $mid = ($left+$right)>>1 werkt wel
if ($numbers[$mid] == $value){
echo "$numbers[$mid] komt voor in de array";
$result = true;
} elseif ($numbers[$mid] < $value){
$left = $mid +1;
} else {
$right = $mid -1;
}
}
if (!$result){
echo "Het getal komt niet voor in de array";
}
}
echo binary_search($numbers,$value);
echo "<br><br>";
sort($numbers);
print_r($numbers);
?>
Gewijzigd op 11/12/2016 13:05:24 door Robert Steegh
Als aanvulling hierop: deze deling levert altijd een geheel getal op, en dat doet jouw regel niet gegarandeerd.
$mid = floor(($left + $right)/2);
heb dit nu en dit werkt prima:)