﻿<?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++博客-ljfpudding-文章分类-Examination</title><link>http://www.cppblog.com/ljfpudding/category/3500.html</link><description /><language>zh-cn</language><lastBuildDate>Thu, 22 May 2008 20:19:41 GMT</lastBuildDate><pubDate>Thu, 22 May 2008 20:19:41 GMT</pubDate><ttl>60</ttl><item><title>指针链表</title><link>http://www.cppblog.com/ljfpudding/articles/18301.html</link><dc:creator>JackLi</dc:creator><author>JackLi</author><pubDate>Sat, 03 Feb 2007 02:20:00 GMT</pubDate><guid>http://www.cppblog.com/ljfpudding/articles/18301.html</guid><wfw:comment>http://www.cppblog.com/ljfpudding/comments/18301.html</wfw:comment><comments>http://www.cppblog.com/ljfpudding/articles/18301.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ljfpudding/comments/commentRss/18301.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ljfpudding/services/trackbacks/18301.html</trackback:ping><description><![CDATA[
		<div>1) 函数merge(intNode *a, intNode *b)将两个升序链表a和b合并成一个升序链表并返回指针。</div>
		<div> </div>
		<div>typedef struct element</div>
		<div>{</div>
		<div>   int val;</div>
		<div>   struct element *next;</div>
		<div>}intNode;</div>
		<div> </div>
		<div>intNode *merge(intNode *a, intNode *b)</div>
		<div>{</div>
		<div> </div>
		<div>   intNode * h= a; *p, *q;</div>
		<div> </div>
		<div>   while(b)</div>
		<div>  {</div>
		<div>     for(p=h;p&amp;&amp;p-&gt;val&lt;b-&gt;val; q=p; p=p-&gt;next);</div>
		<div>     if(p==h)__(1)____;</div>
		<div>     else   __(2)_____;</div>
		<div>     q=b; b=b-&gt;next;</div>
		<div>     ___(3)___;</div>
		<div>  }</div>
		<div> </div>
		<div>  return h;</div>
		<div> </div>
		<div>}</div>
		<div> </div>
		<div>提示：     将b的每个元素依次插入a中<br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><br /><div>答案:</div><div>1    h=b;</div><div>2    q-&gt;next = b;</div><div>3    q-&gt;next = p;</div></div>
<img src ="http://www.cppblog.com/ljfpudding/aggbug/18301.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ljfpudding/" target="_blank">JackLi</a> 2007-02-03 10:20 <a href="http://www.cppblog.com/ljfpudding/articles/18301.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>树与图</title><link>http://www.cppblog.com/ljfpudding/articles/18300.html</link><dc:creator>JackLi</dc:creator><author>JackLi</author><pubDate>Sat, 03 Feb 2007 02:19:00 GMT</pubDate><guid>http://www.cppblog.com/ljfpudding/articles/18300.html</guid><wfw:comment>http://www.cppblog.com/ljfpudding/comments/18300.html</wfw:comment><comments>http://www.cppblog.com/ljfpudding/articles/18300.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ljfpudding/comments/commentRss/18300.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ljfpudding/services/trackbacks/18300.html</trackback:ping><description><![CDATA[
		<div>1) 树的左遍历</div>
		<div> </div>
		<div>void LeftWalkTree(node *root)</div>
		<div>{</div>
		<div>   if(root)</div>
		<div>     printf(" %d \n", root-&gt;data);</div>
		<div>   else</div>
		<div>     return;</div>
		<div> </div>
		<div>   LeftWalkTree(root-&gt;left);</div>
		<div>   LeftWalkTree(root-&gt;right);</div>
		<div>}</div>
		<div> </div>
		<div> </div>
		<div>2)最低公共祖先</div>
		<div>  已知道二元搜索数上的两个节点的值，请找出他们的最低公共祖先。可以假设这两个值是存在的。函数接口如下：</div>
		<div> </div>
		<div>int FindLowestCommonAncestor(node *root, int value1, int value2)</div>
		<div>{</div>
		<div>   node *curNode = root;</div>
		<div>  while(1)</div>
		<div>  {</div>
		<div>     if(curNode-&gt;value &gt; value1 &amp;&amp; curNode-&gt;value &gt;value2)</div>
		<div>        curNode = curNode-&gt;left;</div>
		<div>     else if(curNode-&gt;value &lt;value1 &amp;&amp; curNode-&gt;value &lt;value2)</div>
		<div>        curNode = curNode-&gt;right;</div>
		<div>     else</div>
		<div>         return curNode-&gt;node;</div>
		<div>  }</div>
		<div>}</div>
<img src ="http://www.cppblog.com/ljfpudding/aggbug/18300.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ljfpudding/" target="_blank">JackLi</a> 2007-02-03 10:19 <a href="http://www.cppblog.com/ljfpudding/articles/18300.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>生产者消费者问题</title><link>http://www.cppblog.com/ljfpudding/articles/18299.html</link><dc:creator>JackLi</dc:creator><author>JackLi</author><pubDate>Sat, 03 Feb 2007 02:18:00 GMT</pubDate><guid>http://www.cppblog.com/ljfpudding/articles/18299.html</guid><wfw:comment>http://www.cppblog.com/ljfpudding/comments/18299.html</wfw:comment><comments>http://www.cppblog.com/ljfpudding/articles/18299.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ljfpudding/comments/commentRss/18299.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ljfpudding/services/trackbacks/18299.html</trackback:ping><description><![CDATA[
		<div>请编写一个Producer线程和一个Consumer线程，两个线程共享着一个固定长度的缓冲区和该缓冲区上的一个读写索引index。 Producer负责把一些随即数放到缓冲区里，Consumer则负责删除这些随即数。请用C语言中的信号量来实现这个问题。</div>
		<div> </div>
		<div>static int index =0;</div>
		<div>static int buffer[8];</div>
		<div>static Semaphone bufferWrite;</div>
		<div>
				<div>static Semaphone bufferNotFull;</div>
				<div>
						<div>static Semaphone bufferNotEmpty;</div>
				</div>
		</div>
		<div> </div>
		<div>void Init()</div>
		<div>{</div>
		<div>   bufferWrite = newSemaphone(1);</div>
		<div>   bufferNotFull= newSemaphone(8);</div>
		<div>   bufferNotEmpty= newSemaphone(0);</div>
		<div>}</div>
		<div> </div>
		<div>void Producer(void)</div>
		<div>{</div>
		<div>   while(1)</div>
		<div>   {</div>
		<div>      wait(bufferNotFull);</div>
		<div>      wait(bufferWrite);</div>
		<div>      buffer[index]=rand();</div>
		<div>      index++;</div>
		<div>      signal(bufferWrite);</div>
		<div>      signal(bufferNotEmpty);</div>
		<div>   }</div>
		<div>}</div>
		<div> </div>
		<div>void Consumer()</div>
		<div>{</div>
		<div>     while(1)</div>
		<div>   {</div>
		<div>     wait(bufferNotEmpty);</div>
		<div>     wait(bufferWrite);</div>
		<div>     printf("%d \n", buffer[index]);</div>
		<div>     index--;</div>
		<div>     signal(bufferWrite);</div>
		<div>     signal(bufferNotFull);</div>
		<div>   }</div>
		<div>}</div>
<img src ="http://www.cppblog.com/ljfpudding/aggbug/18299.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ljfpudding/" target="_blank">JackLi</a> 2007-02-03 10:18 <a href="http://www.cppblog.com/ljfpudding/articles/18299.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>删除特定字符串</title><link>http://www.cppblog.com/ljfpudding/articles/18298.html</link><dc:creator>JackLi</dc:creator><author>JackLi</author><pubDate>Sat, 03 Feb 2007 02:16:00 GMT</pubDate><guid>http://www.cppblog.com/ljfpudding/articles/18298.html</guid><wfw:comment>http://www.cppblog.com/ljfpudding/comments/18298.html</wfw:comment><comments>http://www.cppblog.com/ljfpudding/articles/18298.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ljfpudding/comments/commentRss/18298.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ljfpudding/services/trackbacks/18298.html</trackback:ping><description><![CDATA[
		<div>从字符串中删除指定的字符串，</div>
		<div> </div>
		<div>如"Battle of the Vowels: Hawaii VS Grozny"</div>
		<div>删除 "aeiou"</div>
		<div> </div>
		<div>则 最终为 "Bttl f th Vwls: Hw Vs Grzny"</div>
		<div> </div>
		<div>void RemoveChars(char str[], char remove[])</div>
		<div>{</div>
		<div>   int src, dst, removeArray[256];</div>
		<div>   for(src=0; src&lt;256, src++)</div>
		<div>      removeArray[src] = 0;</div>
		<div>   </div>
		<div>    src =0;</div>
		<div>    while(remove[src])</div>
		<div>     {</div>
		<div>        removeArray[remove[src]]=1;</div>
		<div>        src++;</div>
		<div>     }</div>
		<div> </div>
		<div>    src=dst=0;</div>
		<div>  </div>
		<div>    do</div>
		<div>    {</div>
		<div>      if(!removeArray[str[src]])</div>
		<div>           str[dst++]=str[src];</div>
		<div>    }while(str[src++]);</div>
		<div> </div>
		<div>}</div>
<img src ="http://www.cppblog.com/ljfpudding/aggbug/18298.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ljfpudding/" target="_blank">JackLi</a> 2007-02-03 10:16 <a href="http://www.cppblog.com/ljfpudding/articles/18298.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>颠倒单词顺序</title><link>http://www.cppblog.com/ljfpudding/articles/18297.html</link><dc:creator>JackLi</dc:creator><author>JackLi</author><pubDate>Sat, 03 Feb 2007 02:15:00 GMT</pubDate><guid>http://www.cppblog.com/ljfpudding/articles/18297.html</guid><wfw:comment>http://www.cppblog.com/ljfpudding/comments/18297.html</wfw:comment><comments>http://www.cppblog.com/ljfpudding/articles/18297.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ljfpudding/comments/commentRss/18297.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ljfpudding/services/trackbacks/18297.html</trackback:ping><description><![CDATA[
		<div>如 将字符串 "Do or do not, there is no try."</div>
		<div>   转换为 "try. no is there not,do or Do"</div>
		<div> </div>
		<div>int ReverseWords(char str[])</div>
		<div>{</div>
		<div>  char *buffer;</div>
		<div>  int tokenReadPos, wordReadPos, wordEnd, writePos = 0;</div>
		<div> </div>
		<div>  tokenReadPos = strlen(str)-1;</div>
		<div>  </div>
		<div>  buffer = (char*)malloc(tokenReadPos+2);</div>
		<div>  if(!buffer)</div>
		<div>    return;</div>
		<div> </div>
		<div>  while(tokenReadPos&gt;=0)</div>
		<div>  {</div>
		<div>     if(str[tokenReadPos] == '')</div>
		<div>      {</div>
		<div>          buffer[writePos++] = str[tokenReadPos--];</div>
		<div>      }</div>
		<div>      else</div>
		<div>      {</div>
		<div>          wordEnd = tokenReadPos;</div>
		<div>          while(tokenReadPos&gt;=0 &amp;&amp; str[tokenReadPos]!='')</div>
		<div>          {</div>
		<div>             tokenReadPos--;</div>
		<div>          }</div>
		<div>          wordReadPos = tokenReadPos+1;</div>
		<div>         while(wordReadPos&lt;=wordEnd)</div>
		<div>         {</div>
		<div>            buffer[writePos++] = str[wordReadPos++];</div>
		<div>         }</div>
		<div>      }</div>
		<div>  }</div>
		<div>  buffer[writePos]='\0';</div>
		<div>  strcpy(str, buffer);</div>
		<div> </div>
		<div>  free(buffer);</div>
		<div>  return 1;</div>
		<div>}</div>
<img src ="http://www.cppblog.com/ljfpudding/aggbug/18297.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ljfpudding/" target="_blank">JackLi</a> 2007-02-03 10:15 <a href="http://www.cppblog.com/ljfpudding/articles/18297.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>strToInt 与IntToStr</title><link>http://www.cppblog.com/ljfpudding/articles/18296.html</link><dc:creator>JackLi</dc:creator><author>JackLi</author><pubDate>Sat, 03 Feb 2007 02:13:00 GMT</pubDate><guid>http://www.cppblog.com/ljfpudding/articles/18296.html</guid><wfw:comment>http://www.cppblog.com/ljfpudding/comments/18296.html</wfw:comment><comments>http://www.cppblog.com/ljfpudding/articles/18296.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ljfpudding/comments/commentRss/18296.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ljfpudding/services/trackbacks/18296.html</trackback:ping><description><![CDATA[
		<div>将Str转换成Int</div>
		<div> </div>
		<div>int StrToInt(char str[])</div>
		<div>{</div>
		<div>  int i=0;</div>
		<div>  int isNeg = 0;</div>
		<div>  int num =0;</div>
		<div> </div>
		<div>  if(str[0]=='-')</div>
		<div>   {   </div>
		<div>    isNeg = 1;</div>
		<div>    i =1;</div>
		<div>   }</div>
		<div> </div>
		<div>   while(str[i])</div>
		<div>   {</div>
		<div>     num*=10;</div>
		<div>     num+= (str[i++]-'0');</div>
		<div>   }</div>
		<div> </div>
		<div>   if(isNeg)</div>
		<div>     num*= -1;</div>
		<div> </div>
		<div>   return num;</div>
		<div>}</div>
		<div> </div>
		<div> </div>
		<div>将Int转换成Str</div>
		<div> </div>
		<div>#define MAX_DIGITIS_INT 10</div>
		<div> </div>
		<div>void IntToStr(int num, char str[])</div>
		<div>{</div>
		<div>   int i=0,j=0,isNeg=0;</div>
		<div>   char temp[MAX_DIGITIS_INT + 2];</div>
		<div> </div>
		<div>   if(num&lt;0)</div>
		<div>    {</div>
		<div>      num*=-1;</div>
		<div>     isNeg =1;</div>
		<div>     }</div>
		<div> </div>
		<div>    do</div>
		<div>    {</div>
		<div>      temp[i++] = (num%10)+'0';</div>
		<div>      num /= 10;</div>
		<div>    }while(num);</div>
		<div> </div>
		<div>    if(isNeg)</div>
		<div>       temp[i++]= '-';</div>
		<div> </div>
		<div>    while(i&gt;0)</div>
		<div>      str[j++] = temp[--i];</div>
		<div> </div>
		<div>    str[j]='\0';</div>
		<div>}</div>
<img src ="http://www.cppblog.com/ljfpudding/aggbug/18296.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ljfpudding/" target="_blank">JackLi</a> 2007-02-03 10:13 <a href="http://www.cppblog.com/ljfpudding/articles/18296.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>几种排序算法</title><link>http://www.cppblog.com/ljfpudding/articles/18295.html</link><dc:creator>JackLi</dc:creator><author>JackLi</author><pubDate>Sat, 03 Feb 2007 02:12:00 GMT</pubDate><guid>http://www.cppblog.com/ljfpudding/articles/18295.html</guid><wfw:comment>http://www.cppblog.com/ljfpudding/comments/18295.html</wfw:comment><comments>http://www.cppblog.com/ljfpudding/articles/18295.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ljfpudding/comments/commentRss/18295.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ljfpudding/services/trackbacks/18295.html</trackback:ping><description><![CDATA[<div>1）顺序表选择排序</div>
<div>&nbsp;</div>
<div>void ss_sort(int e[], int n)</div>
<div>{</div>
<div>&nbsp;&nbsp; int i,j,k,t;</div>
<div>&nbsp;&nbsp; for(i=0; i&lt;n-1; i++)</div>
<div>&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; for(k=i, j=i+1; j&lt;n; j++)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if( e[k] &gt; e[j]&nbsp;)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k=j;</div>
<div>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(k!=i)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t=e[i]; e[i]=e[k]; e[k]=t;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<div>&nbsp; }</div>
<div>}</div>
<div>&nbsp;</div>
<div>选择排序 共比较n(n-1)/2次，&nbsp; 不稳定排序，如果相等的数，可能交换位置。</div>
<div>&nbsp;</div>
<div>1-1) 堆排序</div>
<div>&nbsp;</div>
<div>渗透函数</div>
<div>void sift(int e[], int n, int s)</div>
<div>{</div>
<div>&nbsp;&nbsp; int t,k,j;</div>
<div>&nbsp;&nbsp; t = e[s];</div>
<div>&nbsp;&nbsp; k=s;</div>
<div>&nbsp;&nbsp; j = 2*k +1;</div>
<div>&nbsp;&nbsp;&nbsp;while(j&lt;n)</div>
<div>&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp; if(j&lt;n-1 &amp;&amp; e[j]&lt;e[j+1])</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; j++;</div>
<div>&nbsp;&nbsp;&nbsp; if(t&lt;e[j])</div>
<div>&nbsp;&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e[k]=e[j];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; k=j;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j=2*k+1;</div>
<div>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp; else</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; break;</div>
<div>&nbsp;&nbsp;}</div>
<div>&nbsp;&nbsp; e[k]= t;</div>
<div>}</div>
<div>&nbsp;</div>
<div>void heapsort(int e[], int n)</div>
<div>{</div>
<div>&nbsp;&nbsp; int i,k,t;</div>
<div>&nbsp;&nbsp; for(i=n/2-1; i&gt;=0; i--)</div>
<div>&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp; sift(e,n,i);</div>
<div>&nbsp; }</div>
<div>&nbsp;</div>
<div>&nbsp;&nbsp; for(k=n-1; k&gt;=1; k--)</div>
<div>&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; t=e[0];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; e[0]=e[k];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp; e[k]=t;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;sift(e,k,0);</div>
<div>&nbsp;&nbsp; }</div>
<div>}</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>2)顺序表直接插入排序</div>
<div>&nbsp;</div>
<div>void insert_sort(int e[],int n)</div>
<div>{</div>
<div>&nbsp;&nbsp; int i,j;</div>
<div>&nbsp;&nbsp; int temp;</div>
<div>&nbsp;&nbsp;&nbsp;for(i=1; i&lt;n; i++)</div>
<div>&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; temp = e[i];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; j =i ;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while( j&gt;0 &amp;&amp; temp&gt;e[j-1])</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e[j] = e[j-1];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;j--;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e[j] = temp;</div>
<div>&nbsp;&nbsp;&nbsp;}</div>
<div>}</div>
<div>&nbsp;</div>
<div>直接插入排序 比较次数最少为n-1次， 最多为n(n-1)/2次，稳定排序</div>
<div>对与原来排好的序列排序效率高</div>
<div>&nbsp;</div>
<div>2-1) 希尔排序</div>
<div>void shell(int e[], int n)</div>
<div>{</div>
<div>&nbsp; int j, k, h, y;</div>
<div>&nbsp; for(h=n/2; h&gt;0; h=h/2)</div>
<div>&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp; for(j=h; j&lt;n; j++)</div>
<div>&nbsp;&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; y= e[j];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; for(k=j-h; k&gt;=0 &amp;&amp; y&lt;e[k] ; k-=h)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e[k+h] = e[k];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e[k+h] = y;</div>
<div>&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp; }</div>
<div>}</div>
<div>&nbsp;</div>
<div>&nbsp;</div>
<div>3）冒泡排序</div>
<div>void mp_sort(int e[], int n)</div>
<div>{</div>
<div>&nbsp; int j,p,h,t;</div>
<div>&nbsp; for(h=n-1; h&gt;0; h=p)</div>
<div>&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp; for(p=j=0; j&lt;h; j++)</div>
<div>&nbsp;&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(e[j]&gt;e[j+1])</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; t = e[j];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;e[j]=e[j+1];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e[j+1]= t;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; p = j;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;}</div>
<div>&nbsp;&nbsp;}</div>
<div>}</div>
<div>&nbsp;</div>
<div>4)快速排序</div>
<div>void r_quick(int e[], int low, int high)</div>
<div>{</div>
<div>&nbsp;&nbsp; int i, j, t;</div>
<div>&nbsp;&nbsp;&nbsp;if(low&lt;high)</div>
<div>&nbsp;&nbsp;&nbsp;{</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; i =low; j = high; t= e[low];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(i&lt;j)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; {</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(i&lt;j &amp;&amp; e[j]&gt;t ) j--;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i&lt;j)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e[i++]=e[j];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; while(i&lt;j &amp;&amp; e[i]&lt;=t) i++;</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; if(i&lt;j)</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; e[j--]=e[i];</div>
<div>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; }</div>
<div>&nbsp;&nbsp;&nbsp;e[i]=t;</div>
<div>&nbsp;&nbsp; r_quick(e,low, i-1);</div>
<div>&nbsp;&nbsp; r_quick(e,i+1,high);<br></div>
<div>&nbsp; }<br>}</div><img src ="http://www.cppblog.com/ljfpudding/aggbug/18295.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ljfpudding/" target="_blank">JackLi</a> 2007-02-03 10:12 <a href="http://www.cppblog.com/ljfpudding/articles/18295.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些试题 答案</title><link>http://www.cppblog.com/ljfpudding/articles/18294.html</link><dc:creator>JackLi</dc:creator><author>JackLi</author><pubDate>Sat, 03 Feb 2007 02:07:00 GMT</pubDate><guid>http://www.cppblog.com/ljfpudding/articles/18294.html</guid><wfw:comment>http://www.cppblog.com/ljfpudding/comments/18294.html</wfw:comment><comments>http://www.cppblog.com/ljfpudding/articles/18294.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ljfpudding/comments/commentRss/18294.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ljfpudding/services/trackbacks/18294.html</trackback:ping><description><![CDATA[1) 字符串 全排列<br /><br />int Permute(char inString[])<br />{<br />    int length = 0;<br />    int i=0;<br />    int *used=NULL;<br />    int *out = NULL;<br /><br />   length = strlen(inString);<br /><br />  out = (char*)malloc( length+1);<br />  if(!out)<br />     return 0;<br /><br />   out[length] = '\0';<br />   used = (int*)malloc( sizeof(int) * length );<br />   if(!used)<br />      return 0;<br />   <br />    for(i=0; i&lt;length; i++)<br />        used[i]=0;<br /><br />     DoPermute( inString, out, used, length, 0 );<br /><br />    free(out);<br />    free(used);<br />   return 1;<br />}<br /><br /><div>void DoPermute(char in[], char out[], int used[], int length, int recursLev)</div><div>{</div><div>      int i;</div><div>      if(recursLev == length) // base case</div><div>      {</div><div>        printf("%s \n", out);</div><div>        return; </div><div>      }</div><div>      </div><div>      for(i =0; i&lt; length; i++)</div><div>      {</div><div>        if(used[i])</div><div>          continue;</div><div>        out[recursLev] = in[i];</div><div>        used[i]=1;</div><div>        DoPermute(in, out, used, length, recursLev+1);</div><div>        used[i] = 0;</div><div>      }</div><div>}<br /><br /><br />2) 字符串 全组合
<div>int Combine(char inString[])</div><div>{</div><div>   int length;</div><div>   char *out;</div><div>   length = strlen(inString);</div><div>   out = (char*)malloc(length+1);</div><div>   if(!out)</div><div>     return 0;</div><div>    DoCombine(inString, out, length, 0,0);</div><div>    free(out);</div><div>    return 1;</div><div>}</div><div> </div><div>void DoCombine(char in[], char out[], int length, int recursLev,int start)</div><div>{</div><div>   int i;</div><div>   for(i=start, i&lt;length; i++)</div><div>  {</div><div>    out[recursLev]=in[i];</div><div>    out[recursLev+1] = '\0';</div><div>    printf("%s \n", out);</div><div>    if(i&lt;length-1)</div><div>      DoCombine(in, out, length, recursLev+1, i+1);</div><div>  }</div><div>}<br /><br />3) 升序 降序<br /><div>int Endianess(void)</div><div>{</div><div>   int tesNum = 1;</div><div>   char *ptr =NULL;</div><div>   ptr = (char*)&amp;testNum;</div><div>   return(*ptr);</div><div>}</div><div> </div><div>int Endianess(void)</div><div>{</div><div>   union</div><div>   {</div><div>     int theInteger;</div><div>     char singleByte;</div><div>   }endianTest;</div><div> </div><div>   endianTest.theInteger = 1;</div><div>  return endianTest.singleByte;</div><div>}</div></div></div><img src ="http://www.cppblog.com/ljfpudding/aggbug/18294.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ljfpudding/" target="_blank">JackLi</a> 2007-02-03 10:07 <a href="http://www.cppblog.com/ljfpudding/articles/18294.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>一些试题</title><link>http://www.cppblog.com/ljfpudding/articles/18293.html</link><dc:creator>JackLi</dc:creator><author>JackLi</author><pubDate>Sat, 03 Feb 2007 01:59:00 GMT</pubDate><guid>http://www.cppblog.com/ljfpudding/articles/18293.html</guid><wfw:comment>http://www.cppblog.com/ljfpudding/comments/18293.html</wfw:comment><comments>http://www.cppblog.com/ljfpudding/articles/18293.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/ljfpudding/comments/commentRss/18293.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/ljfpudding/services/trackbacks/18293.html</trackback:ping><description><![CDATA[
		<div>1) 请编写一个函数，用它把字符串中所有的字符的各种排列形式全部都显示出来；换句话说，用给定的字符串里的字符做全排列。</div>
		<div>   比如给定的字符串是"hat"</div>
		<div>   则输出 "tha","aht","tah","ath","hta","hat"</div>
		<div> </div>
		<div>   字符串中的每一个字符是不相干的，即使有重复出现的，也把他们当成不一样的。</div>
		<div>   如"aaa"  要输出六个 "aaa"<br /><br />2）字符串的全组合<br />编写一个函数， 用它把字符串中所有字符的各种形式组合全部都显示出来。 各种组合的长度范围从一个字符到字符串的长度。不管排列顺序如何，只要两种组合的字符完全一样，则认为是同一种组合。 <br />如 "123" "12" 和"21" 是同一种组合。<br /><br />3）字节的升序存储与字节的降序存储<br /><br />用一个简单函数判断计算机的存储顺序是升序(little-endian) 还是降序(big-endian)<br /><br />注释： 升序--高字节在高位，低字节在低位<br />降序--高字节在低位，低字节在高位。<br /><br /></div>
<img src ="http://www.cppblog.com/ljfpudding/aggbug/18293.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/ljfpudding/" target="_blank">JackLi</a> 2007-02-03 09:59 <a href="http://www.cppblog.com/ljfpudding/articles/18293.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>