﻿<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:trackback="http://madskills.com/public/xml/rss/module/trackback/" xmlns:wfw="http://wellformedweb.org/CommentAPI/" xmlns:slash="http://purl.org/rss/1.0/modules/slash/"><channel><title>C++博客-xyjzsh-随笔分类-算法</title><link>http://www.cppblog.com/xyjzsh/category/15561.html</link><description /><language>zh-cn</language><lastBuildDate>Wed, 10 Aug 2011 16:53:56 GMT</lastBuildDate><pubDate>Wed, 10 Aug 2011 16:53:56 GMT</pubDate><ttl>60</ttl><item><title>重载标准输出符号operator&lt;&lt;</title><link>http://www.cppblog.com/xyjzsh/archive/2011/08/10/152941.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Wed, 10 Aug 2011 05:43:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2011/08/10/152941.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/152941.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2011/08/10/152941.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/152941.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/152941.html</trackback:ping><description><![CDATA[<div>CString是我自己定义的一个类<br />为了实现：<br />CString str("123abvc");<br />cout&lt;&lt;str&lt;&lt;endl;<br /><br /><br />声明：<br />&nbsp;<span style="color: #800000">ostream&amp; operator&lt;&lt;(ostream&amp; os,const CString&amp; str);</span><br />实现：<br />
<p>ostream&amp; operator&lt;&lt;(ostream&amp; os,const CString&amp; str)<br />{<br /><span style="color: red">&nbsp;long multiBytes = WideCharToMultiByte(CP_ACP,0,str._pData,-1,</span><span style="color: #0000ff">NULL,0</span><span style="color: red">,NULL,NULL);//获得将宽字节转换成多自己时，所需要的字节个数，</span><span style="color: #0000ff">注意蓝色部分</span><br />&nbsp;char *lpMultiBytes = new char[multiBytes+10];//分配多字节时所需要的内存<br />&nbsp;memset(lpMultiBytes,0,multiBytes+10);</p>
<p>&nbsp;WideCharToMultiByte(CP_ACP,0,str._pData,-1,<span style="color: #0000ff">lpMultiBytes,multiBytes+10</span>,NULL,NULL);//调用win32api函数将宽字节的表示转换成为多字节的表示，<span style="color: #0000ff">注意蓝色部分</span></p>
<p>&nbsp;os&lt;&lt;lpMultiBytes;</p>
<p>&nbsp;return os;//注意返回值<br />}</p></div><img src ="http://www.cppblog.com/xyjzsh/aggbug/152941.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2011-08-10 13:43 <a href="http://www.cppblog.com/xyjzsh/archive/2011/08/10/152941.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>matlab生成dll后在vc中脱离matlab环境执行</title><link>http://www.cppblog.com/xyjzsh/archive/2011/05/16/146493.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Mon, 16 May 2011 08:05:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2011/05/16/146493.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/146493.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2011/05/16/146493.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/146493.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/146493.html</trackback:ping><description><![CDATA[在没有安装matlab的机器上，要想运行matlab的dll要必须安装MCR环境。<br>在安装了matlab的机器上，在 MATLAB\R2010b\toolbox\compiler\deploy\win32下面有MCR 的安装程序。<br>在安装了MCR的机器上，就可以运行使用了matlab的dll的VC的可执行文件。<br><br>
<img src ="http://www.cppblog.com/xyjzsh/aggbug/146493.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2011-05-16 16:05 <a href="http://www.cppblog.com/xyjzsh/archive/2011/05/16/146493.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>matlab生成dll后在vc中脱离matlab环境执行</title><link>http://www.cppblog.com/xyjzsh/archive/2011/05/16/146494.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Mon, 16 May 2011 08:05:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2011/05/16/146494.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/146494.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2011/05/16/146494.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/146494.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/146494.html</trackback:ping><description><![CDATA[在没有安装matlab的机器上，要想运行matlab的dll要必须安装MCR环境。<br>在安装了matlab的机器上，在 MATLAB\R2010b\toolbox\compiler\deploy\win32下面有MCR 的安装程序。<br>在安装了MCR的机器上，就可以运行使用了matlab的dll的VC的可执行文件。<br><br>
<img src ="http://www.cppblog.com/xyjzsh/aggbug/146494.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2011-05-16 16:05 <a href="http://www.cppblog.com/xyjzsh/archive/2011/05/16/146494.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>vs2008中调用matlab生成的dll</title><link>http://www.cppblog.com/xyjzsh/archive/2011/05/12/146263.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Thu, 12 May 2011 09:28:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2011/05/12/146263.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/146263.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2011/05/12/146263.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/146263.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/146263.html</trackback:ping><description><![CDATA[<p>matlab版本为:matlab7.11.0(R2010b)<br>vs2008<br><br>1.在matlab中生成dll<br><br>在m文件中实现如下功能：<br>获得N个魔方矩阵的秩。m文件的内容如下：<br>function r = mrank(n)</p>
<p>r = zeros(n,1);<br>for k=1:n<br>&nbsp;&nbsp;&nbsp; r(k) = rank(magic(k));<br>end<br><br>将上述内容保存为:mrank.m</p>
<p><br>在matlab的command 窗口键入：<br>&gt;&gt; mcc -B csharedlib:mrank mrank.m %该命令将在后面做说明<br><br>在matlab7.0中执行上述命令后生成下面几个文件：<br>mrank.exp&nbsp;&nbsp;&nbsp; mrank.exports&nbsp;&nbsp; mrank.h&nbsp;&nbsp; mrank.lib&nbsp; mrank.c&nbsp;&nbsp;&nbsp;&nbsp; mrank.dll&nbsp;&nbsp; <br><br>在vs2008中使用m文件的函数功能。<br>首先配置vs2008的环境<br>1.工具——&gt; 选项——&gt;项目和解决方案——&gt;VC++目录<br>(1) 选择&#8220;可执行文件&#8221;下拉框，添加：C:\Program Files\MATLAB\R2010b\bin\win32（注意：当前的Mathlab安装在C:\Program Files下面）<br>(2)选择&#8220;包含文件&#8221;下拉框，添加：C:\Program Files\MATLAB\R2010b\extern\include<br>(3)选择&#8220;引用文件&#8221;下拉框，添加:C:\Program Files\MATLAB\R2010b\extern\lib<br>(4)选择&#8220;库文件&#8221;下拉框，添加：C:\Program Files\MATLAB\R2010b\extern\lib\win32\microsoft<br>上述环境只需要配置一次<br><br>对于每一个工程，做下面的设置<br>项目——&gt;属性——&gt;连接器——&gt;输入<br>选择:附加依赖项：添加:<br>libmex.lib<br>libmx.lib<br>libmat.lib<br>mclmcrrt.lib<br><br>将mrank.h&nbsp; mrank.lib&nbsp; mrank.dll拷贝到当前目录下<br>cpp文件中中的内容如下：<br>#include "stdafx.h"<br>#include&lt;stdlib.h&gt;<br>#include"matrix.h"<br>#include"mrank.h"<br>#include "mclmcrrt.h"<br>#pragma comment(lib,"mrank.lib")<br><br>int main()<br>{<br>&nbsp;&nbsp;mxArray *N(NULL),*R(NULL);<br>&nbsp;int n =12;</p>
<p>&nbsp;mrankInitialize();//初始化动态链接库<br>&nbsp;N = mxCreateDoubleScalar(n);//用n来初始化生成的数组，其实标量就是一个1*1的数组<br>&nbsp;mlfMrank(1,&amp;R,N);//执行m文件的主要功能<br>&nbsp;<br>&nbsp;size_t num = mxGetM(R);//R的行的个数<br>&nbsp;double *res = new double[num];<br>&nbsp;memset(res,0,sizeof(double)*num);</p>
<p>&nbsp;memcpy(res,mxGetPr(R),sizeof(double)*num);</p>
<p>&nbsp;for(int i=0;i&lt;num;++i)<br>&nbsp;&nbsp;printf("%f\n",res[i]);</p>
<p>&nbsp;delete[] res;<br>&nbsp;mxDestroyArray(N);<br>&nbsp;mxDestroyArray(R);<br>&nbsp;<br>&nbsp;mrankTerminate();//终止动态数据连接<br>return 0;<br>}<br><br>上述cpp文件使用了Matlab编译m文件生成的dll，在cpp中通过mxArray这个数据结构来和dll中的方法进行信息交换。<br>这样就在cpp中调用了matlab中的m文件实现的方法。<br><br>mcc命令说明：<br><a href="http://www.cnblogs.com/juneja/archive/2008/10/31/1323423.html">http://www.cnblogs.com/juneja/archive/2008/10/31/1323423.html</a></p>
<img src ="http://www.cppblog.com/xyjzsh/aggbug/146263.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2011-05-12 17:28 <a href="http://www.cppblog.com/xyjzsh/archive/2011/05/12/146263.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>插入排序vs希尔排序</title><link>http://www.cppblog.com/xyjzsh/archive/2011/02/23/140531.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Wed, 23 Feb 2011 09:44:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2011/02/23/140531.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/140531.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2011/02/23/140531.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/140531.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/140531.html</trackback:ping><description><![CDATA[什么是插入排序？<br>在插入排序法中，将检查数组中的每个元素，将它插入排序中的元素的适当位置，当最后一个元素插入到它适当的位置时，这个数组就排好序了。例如，<br><br>假如我们要对一个有5个元素的数组进行升序排列，假设第一个元素的值被假定为已排好序了，那么我们将第2个元素插入到已排序好的数组中的适当位置上，使得数组应该是排序好的。依次类推，将第3个插入到到已排序好的数组中的适当位置，使得插入后数组仍然是排序好的，。。。。。。<br>下面是一个插入排序的Demo：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_13_40_Open_Image onclick="this.style.display='none'; Codehighlighter1_13_40_Open_Text.style.display='none'; Codehighlighter1_13_40_Closed_Image.style.display='inline'; Codehighlighter1_13_40_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_13_40_Closed_Image onclick="this.style.display='none'; Codehighlighter1_13_40_Closed_Text.style.display='none'; Codehighlighter1_13_40_Open_Image.style.display='inline'; Codehighlighter1_13_40_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;tarArr[]</span><span style="COLOR: #000000">=</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_13_40_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_13_40_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">35</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">17</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">66</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">56</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;size&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(tarArr)</span><span style="COLOR: #000000">/</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(tarArr[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;insertSort(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_111_321_Open_Image onclick="this.style.display='none'; Codehighlighter1_111_321_Open_Text.style.display='none'; Codehighlighter1_111_321_Closed_Image.style.display='inline'; Codehighlighter1_111_321_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_111_321_Closed_Image onclick="this.style.display='none'; Codehighlighter1_111_321_Closed_Text.style.display='none'; Codehighlighter1_111_321_Open_Image.style.display='inline'; Codehighlighter1_111_321_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_111_321_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_111_321_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">size;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_149_319_Open_Image onclick="this.style.display='none'; Codehighlighter1_149_319_Open_Text.style.display='none'; Codehighlighter1_149_319_Closed_Image.style.display='inline'; Codehighlighter1_149_319_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_149_319_Closed_Image onclick="this.style.display='none'; Codehighlighter1_149_319_Closed_Text.style.display='none'; Codehighlighter1_149_319_Open_Image.style.display='inline'; Codehighlighter1_149_319_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_149_319_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_149_319_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nextValue&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tarArr[i];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">--</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_204_291_Open_Image onclick="this.style.display='none'; Codehighlighter1_204_291_Open_Text.style.display='none'; Codehighlighter1_204_291_Closed_Image.style.display='inline'; Codehighlighter1_204_291_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_204_291_Closed_Image onclick="this.style.display='none'; Codehighlighter1_204_291_Closed_Text.style.display='none'; Codehighlighter1_204_291_Open_Image.style.display='inline'; Codehighlighter1_204_291_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_204_291_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_204_291_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(nextValue</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">tarArr[j])<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tarArr[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">tarArr[j];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_271_287_Open_Image onclick="this.style.display='none'; Codehighlighter1_271_287_Open_Text.style.display='none'; Codehighlighter1_271_287_Closed_Image.style.display='inline'; Codehighlighter1_271_287_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_271_287_Closed_Image onclick="this.style.display='none'; Codehighlighter1_271_287_Closed_Text.style.display='none'; Codehighlighter1_271_287_Open_Image.style.display='inline'; Codehighlighter1_271_287_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_271_287_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_271_287_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tarArr[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">]</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">nextValue;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<br>下面来介绍一下希尔排序：<br>希尔排序就是将要排序的数据先分成如果组，对每一组实行插入排序。<br>代码如下：<br>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><img id=Codehighlighter1_13_40_Open_Image onclick="this.style.display='none'; Codehighlighter1_13_40_Open_Text.style.display='none'; Codehighlighter1_13_40_Closed_Image.style.display='inline'; Codehighlighter1_13_40_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_13_40_Closed_Image onclick="this.style.display='none'; Codehighlighter1_13_40_Closed_Text.style.display='none'; Codehighlighter1_13_40_Open_Image.style.display='inline'; Codehighlighter1_13_40_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;tarArr[]</span><span style="COLOR: #000000">=</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_13_40_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_13_40_Open_Text><span style="COLOR: #000000">{</span><span style="COLOR: #000000">10</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">35</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">12</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">7</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">17</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">66</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">6</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">56</span><span style="COLOR: #000000">,</span><span style="COLOR: #000000">26</span><span style="COLOR: #000000">}</span></span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;size&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(tarArr)</span><span style="COLOR: #000000">/</span><span style="COLOR: #0000ff">sizeof</span><span style="COLOR: #000000">(tarArr[</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">]);<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;shellSort(</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_110_398_Open_Image onclick="this.style.display='none'; Codehighlighter1_110_398_Open_Text.style.display='none'; Codehighlighter1_110_398_Closed_Image.style.display='inline'; Codehighlighter1_110_398_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_110_398_Closed_Image onclick="this.style.display='none'; Codehighlighter1_110_398_Closed_Text.style.display='none'; Codehighlighter1_110_398_Open_Image.style.display='inline'; Codehighlighter1_110_398_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_110_398_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_110_398_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;gap&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">,j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(gap&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;size</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">;gap</span><span style="COLOR: #000000">&gt;</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;gap</span><span style="COLOR: #000000">/=</span><span style="COLOR: #000000">2</span><span style="COLOR: #000000">)<br><img id=Codehighlighter1_166_396_Open_Image onclick="this.style.display='none'; Codehighlighter1_166_396_Open_Text.style.display='none'; Codehighlighter1_166_396_Closed_Image.style.display='inline'; Codehighlighter1_166_396_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_166_396_Closed_Image onclick="this.style.display='none'; Codehighlighter1_166_396_Closed_Text.style.display='none'; Codehighlighter1_166_396_Open_Image.style.display='inline'; Codehighlighter1_166_396_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_166_396_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_166_396_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">gap;i</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">size;i</span><span style="COLOR: #000000">+=</span><span style="COLOR: #000000">gap)<br><img id=Codehighlighter1_197_393_Open_Image onclick="this.style.display='none'; Codehighlighter1_197_393_Open_Text.style.display='none'; Codehighlighter1_197_393_Closed_Image.style.display='inline'; Codehighlighter1_197_393_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_197_393_Closed_Image onclick="this.style.display='none'; Codehighlighter1_197_393_Closed_Text.style.display='none'; Codehighlighter1_197_393_Open_Image.style.display='inline'; Codehighlighter1_197_393_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_197_393_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_197_393_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;nextValue&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tarArr[i];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">for</span><span style="COLOR: #000000">(j</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">i</span><span style="COLOR: #000000">-</span><span style="COLOR: #000000">gap;j</span><span style="COLOR: #000000">&gt;=</span><span style="COLOR: #000000">0</span><span style="COLOR: #000000">;j</span><span style="COLOR: #000000">-=</span><span style="COLOR: #000000">gap)<br><img id=Codehighlighter1_260_359_Open_Image onclick="this.style.display='none'; Codehighlighter1_260_359_Open_Text.style.display='none'; Codehighlighter1_260_359_Closed_Image.style.display='inline'; Codehighlighter1_260_359_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_260_359_Closed_Image onclick="this.style.display='none'; Codehighlighter1_260_359_Closed_Text.style.display='none'; Codehighlighter1_260_359_Open_Image.style.display='inline'; Codehighlighter1_260_359_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_260_359_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_260_359_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">if</span><span style="COLOR: #000000">(nextValue</span><span style="COLOR: #000000">&lt;</span><span style="COLOR: #000000">tarArr[j])<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tarArr[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">gap]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;tarArr[j];<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">else</span><span style="COLOR: #000000"><br><img id=Codehighlighter1_335_353_Open_Image onclick="this.style.display='none'; Codehighlighter1_335_353_Open_Text.style.display='none'; Codehighlighter1_335_353_Closed_Image.style.display='inline'; Codehighlighter1_335_353_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_335_353_Closed_Image onclick="this.style.display='none'; Codehighlighter1_335_353_Closed_Text.style.display='none'; Codehighlighter1_335_353_Open_Image.style.display='inline'; Codehighlighter1_335_353_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedSubBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_335_353_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_335_353_Open_Text><span style="COLOR: #000000">{<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="COLOR: #0000ff">break</span><span style="COLOR: #000000">;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;tarArr[j</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">gap]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;nextValue;<br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedSubBlockEnd.gif">&nbsp;&nbsp;&nbsp;&nbsp;}</span></span><span style="COLOR: #000000"><br><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span></div>
<br>
<img src ="http://www.cppblog.com/xyjzsh/aggbug/140531.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2011-02-23 17:44 <a href="http://www.cppblog.com/xyjzsh/archive/2011/02/23/140531.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>[算法题]输出从1到1000的数[转载]</title><link>http://www.cppblog.com/xyjzsh/archive/2011/01/17/138641.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Mon, 17 Jan 2011 02:30:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2011/01/17/138641.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/138641.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2011/01/17/138641.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/138641.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/138641.html</trackback:ping><description><![CDATA[<p>有这样一个面试题——<strong>请把从1到1000的数打印出来，但你不能使用任何的循环语句或是条件语句。更不能写1000个printf或是cout</strong>。<strong>用C/C++语言</strong>。 </p>
<p>个人比较赞赏的思路是下面两个：</p>
<p>1. 函数指针数组结合n/1000的结果作为数组的index。</p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080">&nbsp;1</span><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;yesprint(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i);<br></span><span style="COLOR: #008080">&nbsp;2</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;noprint(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i);<br></span><span style="COLOR: #008080">&nbsp;3</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;<br></span><span style="COLOR: #008080">&nbsp;4</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">typedef&nbsp;</span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">(</span><span style="COLOR: #000000">*</span><span style="COLOR: #000000">fnPtr)(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">&nbsp;5</span><span style="COLOR: #000000"><img id=Codehighlighter1_91_111_Open_Image onclick="this.style.display='none'; Codehighlighter1_91_111_Open_Text.style.display='none'; Codehighlighter1_91_111_Closed_Image.style.display='inline'; Codehighlighter1_91_111_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_91_111_Closed_Image onclick="this.style.display='none'; Codehighlighter1_91_111_Closed_Text.style.display='none'; Codehighlighter1_91_111_Open_Image.style.display='inline'; Codehighlighter1_91_111_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif">fnPtr&nbsp;dispatch[]&nbsp;</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_91_111_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_91_111_Open_Text><span style="COLOR: #000000">{&nbsp;yesprint,&nbsp;noprint&nbsp;}</span></span><span style="COLOR: #000000">;<br></span><span style="COLOR: #008080">&nbsp;6</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;<br></span><span style="COLOR: #008080">&nbsp;7</span><span style="COLOR: #000000"><img id=Codehighlighter1_137_194_Open_Image onclick="this.style.display='none'; Codehighlighter1_137_194_Open_Text.style.display='none'; Codehighlighter1_137_194_Closed_Image.style.display='inline'; Codehighlighter1_137_194_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_137_194_Closed_Image onclick="this.style.display='none'; Codehighlighter1_137_194_Closed_Text.style.display='none'; Codehighlighter1_137_194_Open_Image.style.display='inline'; Codehighlighter1_137_194_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;yesprint(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_137_194_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_137_194_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;8</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;printf(</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">%d\n</span><span style="COLOR: #000000">"</span><span style="COLOR: #000000">,&nbsp;i);<br></span><span style="COLOR: #008080">&nbsp;9</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;dispatch[i&nbsp;</span><span style="COLOR: #000000">/</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">](i&nbsp;</span><span style="COLOR: #000000">+</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">10</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">11</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;<br></span><span style="COLOR: #008080">12</span><span style="COLOR: #000000"><img id=Codehighlighter1_218_238_Open_Image onclick="this.style.display='none'; Codehighlighter1_218_238_Open_Text.style.display='none'; Codehighlighter1_218_238_Closed_Image.style.display='inline'; Codehighlighter1_218_238_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_218_238_Closed_Image onclick="this.style.display='none'; Codehighlighter1_218_238_Closed_Text.style.display='none'; Codehighlighter1_218_238_Open_Image.style.display='inline'; Codehighlighter1_218_238_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">void</span><span style="COLOR: #000000">&nbsp;noprint(</span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;i)&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_218_238_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_218_238_Open_Text><span style="COLOR: #000000">{&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_220_236_Closed_Text>/**/</span><span id=Codehighlighter1_220_236_Open_Text><span style="COLOR: #008000">/*</span><span style="COLOR: #008000">&nbsp;do&nbsp;nothing.&nbsp;</span><span style="COLOR: #008000">*/</span></span><span style="COLOR: #000000">&nbsp;}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">13</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif">&nbsp;<br></span><span style="COLOR: #008080">14</span><span style="COLOR: #000000"><img id=Codehighlighter1_253_274_Open_Image onclick="this.style.display='none'; Codehighlighter1_253_274_Open_Text.style.display='none'; Codehighlighter1_253_274_Closed_Image.style.display='inline'; Codehighlighter1_253_274_Closed_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockStart.gif"><img style="DISPLAY: none" id=Codehighlighter1_253_274_Closed_Image onclick="this.style.display='none'; Codehighlighter1_253_274_Closed_Text.style.display='none'; Codehighlighter1_253_274_Open_Image.style.display='inline'; Codehighlighter1_253_274_Open_Text.style.display='inline';" align=top src="http://www.cppblog.com/Images/OutliningIndicators/ContractedBlock.gif"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()&nbsp;</span><span style="BORDER-BOTTOM: #808080 1px solid; BORDER-LEFT: #808080 1px solid; BACKGROUND-COLOR: #ffffff; DISPLAY: none; BORDER-TOP: #808080 1px solid; BORDER-RIGHT: #808080 1px solid" id=Codehighlighter1_253_274_Closed_Text><img src="http://www.cppblog.com/Images/dot.gif"></span><span id=Codehighlighter1_253_274_Open_Text><span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">15</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/InBlock.gif">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;yesprint(</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">);<br></span><span style="COLOR: #008080">16</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/ExpandedBlockEnd.gif">}</span></span><span style="COLOR: #000000"><br></span><span style="COLOR: #008080">17</span><span style="COLOR: #000000"><img align=top src="http://www.cppblog.com/Images/OutliningIndicators/None.gif"></span></div>
<p>2. 构造函数结合静态变量结合数组。</p>
<div style="BORDER-BOTTOM: #cccccc 1px solid; BORDER-LEFT: #cccccc 1px solid; PADDING-BOTTOM: 4px; BACKGROUND-COLOR: #eeeeee; PADDING-LEFT: 4px; WIDTH: 98%; PADDING-RIGHT: 5px; FONT-SIZE: 13px; WORD-BREAK: break-all; BORDER-TOP: #cccccc 1px solid; BORDER-RIGHT: #cccccc 1px solid; PADDING-TOP: 4px"><span style="COLOR: #008080">&nbsp;1</span>&nbsp;<span style="COLOR: #0000ff">class</span><span style="COLOR: #000000">&nbsp;Printer<br></span><span style="COLOR: #008080">&nbsp;2</span>&nbsp;<span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">&nbsp;3</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">public</span><span style="COLOR: #000000">:<br></span><span style="COLOR: #008080">&nbsp;4</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Printer()&nbsp;{&nbsp;</span><span style="COLOR: #0000ff">static</span><span style="COLOR: #000000">&nbsp;unsigned&nbsp;i</span><span style="COLOR: #000000">=</span><span style="COLOR: #000000">1</span><span style="COLOR: #000000">;&nbsp;cout&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;i</span><span style="COLOR: #000000">++</span><span style="COLOR: #000000">&nbsp;</span><span style="COLOR: #000000">&lt;&lt;</span><span style="COLOR: #000000">&nbsp;endl;;&nbsp;}<br></span><span style="COLOR: #008080">&nbsp;5</span>&nbsp;<span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">&nbsp;6</span>&nbsp;<span style="COLOR: #000000">};<br></span><span style="COLOR: #008080">&nbsp;7</span>&nbsp;<span style="COLOR: #000000">&nbsp;<br></span><span style="COLOR: #008080">&nbsp;8</span>&nbsp;<span style="COLOR: #000000"></span><span style="COLOR: #0000ff">int</span><span style="COLOR: #000000">&nbsp;main()<br></span><span style="COLOR: #008080">&nbsp;9</span>&nbsp;<span style="COLOR: #000000">{<br></span><span style="COLOR: #008080">10</span>&nbsp;<span style="COLOR: #000000">&nbsp;&nbsp;&nbsp;&nbsp;Printer&nbsp;p[</span><span style="COLOR: #000000">1000</span><span style="COLOR: #000000">];<br></span><span style="COLOR: #008080">11</span>&nbsp;<span style="COLOR: #000000">}<br></span><span style="COLOR: #008080">12</span>&nbsp;<span style="COLOR: #000000"></span></div>
<img src ="http://www.cppblog.com/xyjzsh/aggbug/138641.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2011-01-17 10:30 <a href="http://www.cppblog.com/xyjzsh/archive/2011/01/17/138641.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>同时求出最大值最小值的方法</title><link>http://www.cppblog.com/xyjzsh/archive/2010/12/02/135253.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Thu, 02 Dec 2010 03:11:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2010/12/02/135253.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/135253.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2010/12/02/135253.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/135253.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/135253.html</trackback:ping><description><![CDATA[在O(3n/2)比较后求出最大值和最小值<br>思想:成对的处理元素，两者较大的和max比较，两者较小的和min比较。<br><br>GetMaxAndMin(A,n)<br>if n为奇数<br>max = min = A[0];<br>i = 1;<br><br>else<br>if A[0]&gt;A[1] then&nbsp; max = A[0]; min = A[1]<br>else max = A[1]; min = A[0];<br>i =2;<br><br>for i to n-1<br><br>if(A[i]&gt;A[i+1])<br>{<br>&nbsp;&nbsp;&nbsp;max = max&gt;A[i] ? max: A[i];<br>&nbsp;&nbsp;&nbsp;min = A[i+1]&lt;min ? A[i+1]:min;<br>}<br>else<br>{<br>&nbsp;&nbsp;&nbsp;max = A[i+1]&gt;max ? A[i+1]:max;<br>&nbsp;&nbsp;&nbsp;min = A[i]&lt;min ? A[i] : min;<br>}<br><br>i+=2;<br>&nbsp;&nbsp;&nbsp;
<img src ="http://www.cppblog.com/xyjzsh/aggbug/135253.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2010-12-02 11:11 <a href="http://www.cppblog.com/xyjzsh/archive/2010/12/02/135253.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>O(n)的时间内找到第k个最大值（最小值）的算法</title><link>http://www.cppblog.com/xyjzsh/archive/2010/12/02/135247.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Thu, 02 Dec 2010 03:02:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2010/12/02/135247.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/135247.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2010/12/02/135247.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/135247.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/135247.html</trackback:ping><description><![CDATA[<span>下面介绍一种在O(n)的时间内找出第k个最大值(最小值)的方法<br>该方法和快速排序相似。不同在于每次只出理一边。<br>伪代码如下：<br>Random-select(A,p,r,i)//找到A中的第i个最小值<br>if p==r<br>then return a[p]<br>q = random-partition(A,p,r)<br>k = p-q+1<br>if(i==k)<br>then return A[q]<br>else if i&lt;k<br>then return random-select(A,p,q-1,i)<br>else return random-select(A,q+1,r,i-k)<br>这个算法很不错。<img border=0 src="http://www.cppblog.com/Emoticons/QQ/14.gif" width=20 height=20><br><br></span>
<img src ="http://www.cppblog.com/xyjzsh/aggbug/135247.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2010-12-02 11:02 <a href="http://www.cppblog.com/xyjzsh/archive/2010/12/02/135247.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>浅谈排序算法</title><link>http://www.cppblog.com/xyjzsh/archive/2010/12/02/135246.html</link><dc:creator> 呆人</dc:creator><author> 呆人</author><pubDate>Thu, 02 Dec 2010 03:01:00 GMT</pubDate><guid>http://www.cppblog.com/xyjzsh/archive/2010/12/02/135246.html</guid><wfw:comment>http://www.cppblog.com/xyjzsh/comments/135246.html</wfw:comment><comments>http://www.cppblog.com/xyjzsh/archive/2010/12/02/135246.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xyjzsh/comments/commentRss/135246.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xyjzsh/services/trackbacks/135246.html</trackback:ping><description><![CDATA[最近在看《算法导论》，首先在这推荐一下这本书，写的确实很精彩<img border=0 src="http://www.cppblog.com/Emoticons/QQ/15.gif" width=20 height=20>。<br>《算法导论》的第二部分分析了多种排序算法。包括插入排序、归并排序、堆排序、快速排序以及线性排序的几个算法。<br>下面简要总结一下。<br>对于输入规模为n的数组。插入排序的复杂度为O(n^2)。<br>归并排序、堆排序、快速排序的复杂度为O(n㏒n);<br>线性排序的复杂度为O(n)<br>1.插入排序的性能和输入元素的的序列有很大的关系，如果输入已排序的序列，则复杂度是线性的，若输入是逆序的则是O(n^2)的。<br>2.堆排序用到了优先队列（优先队列是一种用来维护由一组元素构成的集合S的数据结构）。<br>3.快速排序的关键是主元的选取(pivot)。在排序过程中元素被分成四部分：小于等于主元的序列、大于主元的序列、未比较的序列、主元。<br>当未比较的序列未空时，再分别对小于等于主元的序列进行排序、对大于主元的序列进行排序。<br><span style="COLOR: red">以上三种排序都是原地排序</span>。所谓的原地排序(in-place)是指这些元素是在原数组中重排序的，在任何时刻，至多其中的常数个数字是存储在数组之外的。<br>4.归并排序是将原数组划分成子序列，对子序列进行排序，然后将排序好的子序列合并到一起从而使得原序列重排。<br>归并排序不是原地排序，它需要额外的内存资源。<br><br>以上四种是比较常用的排序，对于输入序列没有特殊的要求，并且都是比较排序，也就是说通过比较各个元素而进行的排序。它们的时间复杂度最好为O(n㏒n);<br><br>下面介绍能在时间内完成的排序。<br>1.计数排序<br>适用条件：输入序列中的元素取值在一个范围之内0-k<br>基本思想:对于每一个元素确定比它小的的元素的个数。<br>排序A序列，将结果放入B中，元素的取值范围为0-k<br>伪代码如下：<br>Count-sort(A,B,k)<br>for i=0 to k<br>do C[i]=0<br>for j=1 to length(A)<br>do C[A[j]] = C[A[j]]+1;计算A[j]的个数。<br><br>for i=1 to k<br>do C[i] = C[i-1]+C[i];计算小于和等于i的元素个数<br><br>for j=length(A) downto 1<br>do B[C[A[j]]] = A[j];<br>C[A[j]] = C[A[j]]-1;<br><br>我们可以明显看到计数排序不是原地排序。同时计数排序是稳定的（即相同的元素输入和输出的相对位置不变。）<br><br><br><br>
<img src ="http://www.cppblog.com/xyjzsh/aggbug/135246.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xyjzsh/" target="_blank"> 呆人</a> 2010-12-02 11:01 <a href="http://www.cppblog.com/xyjzsh/archive/2010/12/02/135246.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>