Post your solutions to the Sep 11 In-class Exercise to this Thread.
Best,
Chris
<?php
function binarySearch(t, P, low, high, current)
{
a = P[t];
while(low <= high) {
m = (low + high)/2;
if(a[m] == current)
return a[m+1];
if(a[m] < current)
low = m + 1;
else
high = m - 1;
}
return a[$low];
}
t = "frog";
P = [
"aadvark" => [1, 5, 9],
"frog" => [1, 2, 3, 5, 25, 26, 27, 38, 50],
"salamander" => [1 ,3, 14, 67]
];
echo binarySearch(t, P, 1, 4, 14);
<?php
function binarySearch(t, P, low, high, current) {
while(high - low > 1) {
mid = (int)(high+low) / 2;
if(P[t][mid] < current)
return binarySearch(t,P,mid,high,current);
else
return binarySearch(t,P,low,mid,current);
}
if(high - low == 1) {
if(P[t][low] <= current && P[t][high] > current)
return P[t][$high];
}
}
t = "frog";
P = [
"aadvark" => [1, 5, 9],
"frog" => [1, 2, 3, 5, 25, 26, 27, 38, 50],
"salamander" => [1 ,3, 14, 67]
];
echo binarySearch(t, P, 1, 4, 14);
<?php
function binarysearch(t,P,low,high,current){
arr = P[t];
if (high < low)
return false;
while(low<=high){
mid = floor((high + low)/2);
if (arr[mid] == current)
low=mid+1;
elseif (arr[mid] > $current) {
$high=$mid-1;
}
else {
$low=$mid+1;
}
}
return $arr[$low];
}
t = "frog";
P = [
"aadvark" => [1, 5, 9],
"frog" => [1, 2, 3, 5, 25, 26, 27, 38, 50],
"salamander" => [1 ,3, 14, 67]
];
echo binarySearch(t, P, 1, 4, 14);
<?php
function binarySearch(t, P, low, high, current){
mid = low + (high-low)/2;
if(low<=high){
if(P[t][low] > current){
return P[t][low];
}
else if(P[t][mid] <= current){
binarySearch(t,P,mid + 1, high, current);
}
}
return P[t][high];
}
t = "frog";
P=["aadvark" => [1, 5, 9],
"frog" => [1,2,3,5,25,26,2,38,50],
"salamander" => [1,3,14,6]
];
echo binarySearch(t, P, 1, 4, 14);
?>
function binarySearch(t, P, low, high, current){
if(P[t][low] > current){
return P[t][low];
}
while(low <= high){
mid = (low + high)/2;
if(P[t][mid] == current){
return P[t][mid + 1];
}elseif(current < P[t][mid]){
high = mid - 1;
}else{
low = mid + 1;
}
}
return P[t][floor($high)];
}
t = "frog";
P = [
"aadvark" => [1, 5, 9],
"frog" => [1, 2, 3, 5, 25, 26, 27, 38, 50],
"salamander" => [1 ,3, 14, 67]
];
echo binarySearch(t, P, 1, 4, 14);
<?php
function binarySearch(t, P, low, high, current){
if(high>=low){
mid=low + floor((high-low)/2);
if(P[t][mid]==current && mid<count(P[t])){
return P[t][mid];
}
else if (high-low==1){
return (P[t][high]);
}
else if ($P[$t][$mid]>$current){
return binarysearch($t,$P,$low,$mid-1,$current);
}
else if ($P[$t][$mid]<$current){
return binarysearch($t,$P,$mid+1,$high,$current);
}
}
}
t = "salamander";
P = [
"aadvark" => [1, 5, 9],
"frog" => [1, 2, 3, 5, 25, 26, 27, 38, 50],
"salamander" => [1 ,4, 14, 67]
];
echo binarySearch(t, P, 1,2,9);
?>
<?php
function binarySearch(t, P, low, high, current) {
if (count(P) === 0) return false;
a = P[t];
low = $low - 1;
while (low <= high)
{
mid = floor((low + $high) / 2);
if($a[$mid] == $current)
{
return true;
}
if($current < $a[$mid])
{
$high = $mid -1;
}
else
{
$low = $mid + 1;
}
}
return a[low];
}
t = "frog";
P = ["aadvark" => [1, 5, 9], "frog" => [1, 2, 3, 5, 25, 26, 27, 38, 50], "salamander" => [1, 3, 14, 67]];
echo binarySearch(t, P, 1, 4, 14);
echo " ";
?>
function binarySearch(t, P, low, high, current)
{
array = P[t];
return binarySearchHelper(array, low, high, current);
}
function binarySearchHelper(arr, low, high, current)
{
if($current>$arr[$high])
{
return -1;
}
if($high<$low)
{
return -1;
}
if($current < $arr[$low])
{
return $arr[$low];
}
if($low == $high)
{
return $arr[high];
}
else
{
$mid = (($high - $low + 1) / 2);
if ($arr[$mid] < $current)
return binarySearchHelper($arr, $mid + 1, $high, $current);
else
return binarySearchHelper($arr, $low, $mid, $current);
}
}
echo(binarySearch(t, P, low, high, $current))
function binarySearch(t, P, low, high, current)
{
if(P[t][low] > current){
return P[t][low];
}else if(P[t][high] <= current){
return -1;
}
while ($low < $high) {
$mid = floor(($low + $high) / 2);
if($P[$t][$mid] == $current) {
return $P[$t][$mid+1];
}elseif ($P[$t][$mid] > $current) {
if($P[$t][$mid-1] <= $current){
$high = $mid;
}else {
$high = $mid - 1;
}
}else {
$low = $mid + 1 ;
}
}
return $P[$t][$high];
}