⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 subject_60473.htm

📁 vc
💻 HTM
字号:
<p>
序号:60473 发表者:Romantic 发表日期:2003-11-13 16:47:37
<br>主题:请教一道算法题!
<br>内容:设a[0:n-1]是一个已排好序的数组。请改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素位置j。当搜索元素在数组中时,i和j相同,均为x在数组中的位置。<BR><BR>
<br><a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p>
<hr size=1>
<blockquote><p>
<font color=red>答案被接受</font><br>回复者:lbb 回复日期:2003-11-19 20:05:14
<br>内容:我现在编了一个程序,你试试,我是现编现卖:<BR>#include &lt;math.h&gt;<BR>#include &lt;stdio.h&gt;<BR> <BR>void main()<BR>{<BR> int i,k,j;<BR> double a[100];//100是数组的长度,可以自已更改<BR>double x;<BR>//给x和a[100]赋值,然后下面是主要程序<BR> for(k=0;k&lt;100;k++)<BR>{<BR>&nbsp;&nbsp;if(a[k]=x)<BR> {<BR>  i=j=k;<BR>&nbsp;&nbsp; go to loop;<BR>&nbsp;&nbsp; }<BR>&nbsp;&nbsp;else<BR>&nbsp;&nbsp;{<BR>&nbsp;&nbsp; if((a[k]&lt;x)&amp;&amp;(a[k+1]&gt;x))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;i=k;<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j=k+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp; go to loop;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;}<BR> loop: printf(&#34;i=%d&nbsp;&nbsp;j= %d\n&#34;,i,j);<BR>}
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:黑羽 回复日期:2003-11-19 23:20:04
<br>内容:1楼的朋友,虽然你的能达到目的,但你的算法不是二分搜索算法吧?
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:李彬彬 回复日期:2003-11-20 10:49:52
<br>内容:不好意思,忘记主题了,只想达到目的而没考虑过程,别见笑,现编现卖肯定会出错的。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Romantic 回复日期:2003-11-20 16:23:50
<br>内容:谢谢你们这么关心我的问题<BR>~~!!!<BR>Thank you very much!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:李彬彬 回复日期:2003-11-20 17:20:49
<br>内容:不好意思,我没有给你很好的答案,但是我很高兴能帮你,即使我的帮助是没用的,不用客气!你是一个不错的人,虽然我不认识你,祝你好运!
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:黑羽 回复日期:2003-11-20 17:52:52
<br>内容:哈哈,各位前辈干嘛那么谦虚啊,能在算法版发帖的人已经很不错了,以后还要请教你们。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Romantic 回复日期:2003-11-21 16:07:56
<br>内容:感谢大家这么关心我
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lbb 回复日期:2003-11-22 18:27:19
<br>内容:我把答案放在下面,可直接运行,我试过了,数据你可以自已改动一下,你用一下:<BR>#include &#34;stdafx.h&#34;<BR>#include &lt;math.h&gt;<BR>#include &lt;stdio.h&gt;<BR><BR>double a[100];//5是数组的长度,可以自已更改<BR>double x=62.5;//给x和a[100]赋值,然后下面是主要程序<BR><BR>void binary_search(int n1,int n2)<BR>{<BR><BR> int m;<BR> if(n1&gt;n2)<BR> {<BR> printf(&#34;error!&#34;);<BR> }<BR>else<BR>{ <BR>&nbsp;&nbsp;m=(int)((n1+n2)/2);<BR> if(a[m]==x)<BR> {<BR>&nbsp;&nbsp;printf(&#34;x在a中的位置为%d&#34;,m);<BR> }<BR> else<BR> {<BR>&nbsp;&nbsp;&nbsp;&nbsp;if((a[m]&lt;x)&amp;&amp;(a[m+1]&gt;x))<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;printf(&#34;x在a中的位置为%d 与 %d之间&#34;,m,m+1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(a[m]&gt;x)<BR>&nbsp;&nbsp;&nbsp;&nbsp;{ <BR>&nbsp;&nbsp; binary_search(n1,m-1);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;else<BR>&nbsp;&nbsp;&nbsp;&nbsp;{<BR>&nbsp;&nbsp;binary_search(m+1,n2);<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>}<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR><BR>void main()<BR>{<BR>int i;<BR>for(i=0;i&lt;100;i++)<BR>{<BR>&nbsp;&nbsp;&nbsp;&nbsp;a[i]=i;<BR>}<BR>binary_search(0,99);<BR>} <BR>
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:黑羽 回复日期:2003-11-23 00:14:15
<br>内容:各位朋友,请注意,8楼的才是正确答案。这是基础算法,值得学习。
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:Romantic 回复日期:2003-11-23 16:37:08
<br>内容:谢谢11楼的这位哥哥指点~~~
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:lihp 回复日期:2004-01-10 18:45:09
<br>内容:各位都是高手,钦佩钦佩
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:rushwin 回复日期:2004-01-15 16:48:08
<br>内容:不错,是基础算法。&nbsp;&nbsp;看的懂不是本事,要能自己写出来才是真正掌握。<BR>&nbsp;&nbsp; 偶不断努力中....
<br>
<a href="javascript:history.go(-1)">返回上页</a><br><a href=http://www.copathway.com/cndevforum/>访问论坛</a></p></blockquote>
<hr size=1>
<blockquote><p>
回复者:胡思 回复日期:2004-02-13 11:08:25
<br>内容:脑子不好使,记不住算法!拿着课本做了一下!<BR>#include &lt;iostream&gt;<BR>using namespace std;<BR>int main(){<BR>&nbsp;&nbsp;&nbsp;&nbsp;int a[10]={0,2,8,14,15,19,24,28,35,40};<BR>&nbsp;&nbsp;&nbsp;&nbsp;int left=0,right=9,mid,x;<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;&#34;Input x :&#34;&lt;&lt;endl;<BR>&nbsp;&nbsp;&nbsp;&nbsp;cin&gt;&gt;x;<BR>&nbsp;&nbsp;&nbsp;&nbsp;while(left&lt;=right){<BR>&nbsp;&nbsp;&nbsp;&nbsp;mid=(left+right)/2;<BR>&nbsp;&nbsp;&nbsp;&nbsp;//cout&lt;&lt;&#34;mid==&#34;&lt;&lt;mid&lt;&lt;'\n';<BR>&nbsp;&nbsp;&nbsp;&nbsp;if(x==a[mid])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;break;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<BR>&nbsp;&nbsp;&nbsp;&nbsp;else if(x&gt;a[mid])<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; left=mid+1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;else <BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;right=mid-1;<BR>&nbsp;&nbsp;&nbsp;&nbsp;}<BR>if (left&lt;=right)<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt; &#34; a[ &#34;&lt;&lt;mid&lt;&lt; &#34;]== &#34; &lt;&lt; x &lt;&lt;endl;<BR>else<BR>&nbsp;&nbsp;&nbsp;&nbsp;cout&lt;&lt;&#34; X不在数组中,小于X的最大值为: &#34;&lt;&lt; a[mid-1]&lt;&lt;'\n'<BR>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&lt;&lt; &#34; 大于X的最小值为: &#34;&lt;&lt;a[mid] &lt;&lt;'\n';<BR>return 0;<BR>}<BR>2004-2-13 11:33:52

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -