Binary Search: Difference between revisions
Jump to navigation
Jump to search
imported>Kmk21 No edit summary |
imported>Kmk21 No edit summary |
||
Line 1: | Line 1: | ||
= | =discrete= | ||
<syntaxhighlight line lang="java"> | <syntaxhighlight line lang="java"> | ||
int mask=1,ans=0; | int mask=1,ans=0; | ||
Line 6: | Line 6: | ||
if(ans+mask<max && function(ans+mask)>=0)ans|=mask; | if(ans+mask<max && function(ans+mask)>=0)ans|=mask; | ||
mask>>=1; | mask>>=1; | ||
} | |||
</syntaxhighlight> | |||
=continuous= | |||
<syntaxhighlight line lang="java"> | |||
double mask=1,ans=0; | |||
while(mask<max)mask*=2; | |||
while(mask>epsilon) { | |||
if(ans+mask<max && function(ans+mask)>=0)ans+=mask; | |||
mask/=2; | |||
} | } | ||
</syntaxhighlight> | </syntaxhighlight> |
Revision as of 02:55, 16 February 2015
discrete
int mask=1,ans=0;
while(mask<max)mask<<=1;
while(mask>0) {
if(ans+mask<max && function(ans+mask)>=0)ans|=mask;
mask>>=1;
}
continuous
double mask=1,ans=0;
while(mask<max)mask*=2;
while(mask>epsilon) {
if(ans+mask<max && function(ans+mask)>=0)ans+=mask;
mask/=2;
}