﻿<?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++博客-bon</title><link>http://www.cppblog.com/bon/</link><description /><language>zh-cn</language><lastBuildDate>Mon, 13 Apr 2026 00:14:20 GMT</lastBuildDate><pubDate>Mon, 13 Apr 2026 00:14:20 GMT</pubDate><ttl>60</ttl><item><title>merge sort pitfalls</title><link>http://www.cppblog.com/bon/archive/2009/04/30/81561.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Thu, 30 Apr 2009 05:57:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2009/04/30/81561.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/81561.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2009/04/30/81561.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/81561.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/81561.html</trackback:ping><description><![CDATA[Recently, I began to peruse the CLRS (Introduction to Algorithms).<br><br>Now I would like to scan all basic algorithms, especially sorting and searching.<br><br>Let me first present a classic sorting algorithm - merge sort. Here is my code. Before I reach here, some mistakes are made, thus I note these "pitfalls" in the code<br><br>#include &lt;stdlib.h&gt;<br>#include &lt;stdio.h&gt;<br>#define MAX 1e9&nbsp;&nbsp;&nbsp; // the biggest possible value of a int number is 2^31 - 1 which is approximately 10^9<br>#define SIZE 10 <br><br>int *a;<br>int *b;<br>int *c;<br><br>// merge [p, q] and [q+1, r], where within each range number are sorted<br>void merge(int p, int q, int r)<br>{<br>&nbsp;&nbsp;&nbsp; int k;<br>&nbsp;&nbsp;&nbsp; int length = r - p +1;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // the length the range to be merge<br>&nbsp;&nbsp;&nbsp; for (k = 0; k &lt; q - p + 1; k++) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; b[k] = a[p + k];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // copy number in a[p, q] to b<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; b[k] = MAX;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // b[k] = MAX, not b[k+1]=MAX<br>&nbsp;&nbsp;&nbsp; for (k = 0; k &lt; r - q; k++) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; c[k] = a[q + 1 + k];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // copy number in a[q+1, r] to c<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; c[k] = MAX;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // c[k] = MAX, not c[k+1]=MAX<br><br>&nbsp;&nbsp;&nbsp; /* BEGIN merging */<br>&nbsp;&nbsp;&nbsp; int i = 0;<br>&nbsp;&nbsp;&nbsp; int j = 0;<br>&nbsp;&nbsp;&nbsp; for (k=0;k&lt;length;k++) {&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // do exactly length times of copy<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; if (b[i] &lt; c[j]) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; a[p + k] = b[i++];&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // be careful! a[p, r] is a whole range now, and watch out the base "p"<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; } else {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; a[p + k] = c[j++];<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; }<br>}<br><br>void merge_sort(int l, int u)<br>{<br>&nbsp;&nbsp;&nbsp; if (l == u) return;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // when to stop recursion? only one number needs no sorting<br>&nbsp;&nbsp;&nbsp; int m = (l + u)/2;<br>&nbsp;&nbsp;&nbsp; merge_sort(l, m);<br>&nbsp;&nbsp;&nbsp; merge_sort(m + 1, u);<br>&nbsp;&nbsp;&nbsp; merge(l, m, u);<br>}<br><br>int main()<br>{<br>&nbsp;&nbsp;&nbsp; a = (int*)malloc(SIZE * sizeof(int));<br>&nbsp;&nbsp;&nbsp; b = (int*)malloc(SIZE * sizeof(int));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // cache, avoid many "malloc" in the merge function<br>&nbsp;&nbsp;&nbsp; c = (int*)malloc(SIZE * sizeof(int));&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // this trick is from "Programming Pearls"<br>&nbsp;&nbsp;&nbsp; int i;<br>&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; SIZE; i++) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; a[i] = SIZE - i;<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; merge_sort(0, SIZE - 1);&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; // watch out the range<br>&nbsp;&nbsp;&nbsp; for (i = 0; i &lt; SIZE; i++) {<br>&nbsp;&nbsp;&nbsp; &nbsp;&nbsp;&nbsp; printf("%d\n", a[i]);<br>&nbsp;&nbsp;&nbsp; }<br>&nbsp;&nbsp;&nbsp; return 1;<br>}<br><br><img src ="http://www.cppblog.com/bon/aggbug/81561.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2009-04-30 13:57 <a href="http://www.cppblog.com/bon/archive/2009/04/30/81561.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>KMP (2)</title><link>http://www.cppblog.com/bon/archive/2008/07/31/57589.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Thu, 31 Jul 2008 02:51:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2008/07/31/57589.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/57589.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2008/07/31/57589.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/57589.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/57589.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 未完&nbsp;&nbsp;<a href='http://www.cppblog.com/bon/archive/2008/07/31/57589.html'>阅读全文</a><img src ="http://www.cppblog.com/bon/aggbug/57589.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2008-07-31 10:51 <a href="http://www.cppblog.com/bon/archive/2008/07/31/57589.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>POJ 2406</title><link>http://www.cppblog.com/bon/archive/2008/07/28/57360.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Mon, 28 Jul 2008 08:48:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2008/07/28/57360.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/57360.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2008/07/28/57360.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/57360.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/57360.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 水题&nbsp;&nbsp;<a href='http://www.cppblog.com/bon/archive/2008/07/28/57360.html'>阅读全文</a><img src ="http://www.cppblog.com/bon/aggbug/57360.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2008-07-28 16:48 <a href="http://www.cppblog.com/bon/archive/2008/07/28/57360.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>KMP算法</title><link>http://www.cppblog.com/bon/archive/2008/07/25/57124.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Fri, 25 Jul 2008 03:45:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2008/07/25/57124.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/57124.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2008/07/25/57124.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/57124.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/57124.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 详细介绍KMP算法以及POJ上的一道题目&nbsp;&nbsp;<a href='http://www.cppblog.com/bon/archive/2008/07/25/57124.html'>阅读全文</a><img src ="http://www.cppblog.com/bon/aggbug/57124.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2008-07-25 11:45 <a href="http://www.cppblog.com/bon/archive/2008/07/25/57124.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>KDDcup(1) 非完整版</title><link>http://www.cppblog.com/bon/archive/2008/07/09/55688.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Wed, 09 Jul 2008 01:55:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2008/07/09/55688.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/55688.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2008/07/09/55688.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/55688.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/55688.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: kddcup08 (1)&nbsp;&nbsp;<a href='http://www.cppblog.com/bon/archive/2008/07/09/55688.html'>阅读全文</a><img src ="http://www.cppblog.com/bon/aggbug/55688.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2008-07-09 09:55 <a href="http://www.cppblog.com/bon/archive/2008/07/09/55688.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>KDDCUP08</title><link>http://www.cppblog.com/bon/archive/2008/06/29/54898.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Sun, 29 Jun 2008 02:52:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2008/06/29/54898.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/54898.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2008/06/29/54898.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/54898.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/54898.html</trackback:ping><description><![CDATA[最近在<a href="http://www1.cs.columbia.edu/~wfan/">Wei</a>的指导下，跟显露参加了<a href="http://www.kddcup2008.com/">KDDCUP08</a>的数据挖掘比赛。在这次比赛中的数据处理、算法以及其它的收获，会以连载的方式发出来，敬请各位关注。
<img src ="http://www.cppblog.com/bon/aggbug/54898.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2008-06-29 10:52 <a href="http://www.cppblog.com/bon/archive/2008/06/29/54898.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 2748</title><link>http://www.cppblog.com/bon/archive/2008/06/09/52663.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Mon, 09 Jun 2008 07:29:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2008/06/09/52663.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/52663.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2008/06/09/52663.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/52663.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/52663.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 解题报告 rather tricky&nbsp;&nbsp;<a href='http://www.cppblog.com/bon/archive/2008/06/09/52663.html'>阅读全文</a><img src ="http://www.cppblog.com/bon/aggbug/52663.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2008-06-09 15:29 <a href="http://www.cppblog.com/bon/archive/2008/06/09/52663.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>最长公共子序列（pku 1936）</title><link>http://www.cppblog.com/bon/archive/2008/05/27/51280.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Tue, 27 May 2008 07:46:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2008/05/27/51280.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/51280.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2008/05/27/51280.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/51280.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/51280.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: pku 1936 解题报告+LCS的理解&nbsp;&nbsp;<a href='http://www.cppblog.com/bon/archive/2008/05/27/51280.html'>阅读全文</a><img src ="http://www.cppblog.com/bon/aggbug/51280.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2008-05-27 15:46 <a href="http://www.cppblog.com/bon/archive/2008/05/27/51280.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>poj 3437</title><link>http://www.cppblog.com/bon/archive/2008/05/24/50969.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Sat, 24 May 2008 12:34:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2008/05/24/50969.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/50969.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2008/05/24/50969.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/50969.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/50969.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 递归 树的深度 左儿子右兄弟&nbsp;&nbsp;<a href='http://www.cppblog.com/bon/archive/2008/05/24/50969.html'>阅读全文</a><img src ="http://www.cppblog.com/bon/aggbug/50969.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2008-05-24 20:34 <a href="http://www.cppblog.com/bon/archive/2008/05/24/50969.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>pku 3349</title><link>http://www.cppblog.com/bon/archive/2008/05/24/50937.html</link><dc:creator>bon</dc:creator><author>bon</author><pubDate>Sat, 24 May 2008 03:34:00 GMT</pubDate><guid>http://www.cppblog.com/bon/archive/2008/05/24/50937.html</guid><wfw:comment>http://www.cppblog.com/bon/comments/50937.html</wfw:comment><comments>http://www.cppblog.com/bon/archive/2008/05/24/50937.html#Feedback</comments><slash:comments>1</slash:comments><wfw:commentRss>http://www.cppblog.com/bon/comments/commentRss/50937.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/bon/services/trackbacks/50937.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: hash表&nbsp;&nbsp;<a href='http://www.cppblog.com/bon/archive/2008/05/24/50937.html'>阅读全文</a><img src ="http://www.cppblog.com/bon/aggbug/50937.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/bon/" target="_blank">bon</a> 2008-05-24 11:34 <a href="http://www.cppblog.com/bon/archive/2008/05/24/50937.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>