﻿<?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++博客-清风竹林-随笔分类-算法为魂</title><link>http://www.cppblog.com/xmli/category/9108.html</link><description>ぷ雪飘绛梅映残红 &lt;br&gt;
&amp;nbsp;&amp;nbsp; ぷ花舞霜飞映苍松&lt;br&gt; &amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp;----- Do more,suffer less</description><language>zh-cn</language><lastBuildDate>Thu, 25 Nov 2010 17:18:02 GMT</lastBuildDate><pubDate>Thu, 25 Nov 2010 17:18:02 GMT</pubDate><ttl>60</ttl><item><title>冒泡和选择排序该被踢出教材了(转)</title><link>http://www.cppblog.com/xmli/archive/2010/11/25/134594.html</link><dc:creator>李现民</dc:creator><author>李现民</author><pubDate>Thu, 25 Nov 2010 01:59:00 GMT</pubDate><guid>http://www.cppblog.com/xmli/archive/2010/11/25/134594.html</guid><wfw:comment>http://www.cppblog.com/xmli/comments/134594.html</wfw:comment><comments>http://www.cppblog.com/xmli/archive/2010/11/25/134594.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xmli/comments/commentRss/134594.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xmli/services/trackbacks/134594.html</trackback:ping><description><![CDATA[&nbsp;&nbsp;&nbsp;&nbsp; 摘要: 文章源于csdn的一篇帖子，原地址：http://topic.csdn.net/u/20100805/20/231B9356-847D-4FE9-87BA-2A2A3C55CA76.html非常汗颜，楼主所提到的一些方法，像鸽巢排序与梳排序的名字我都没听说过，故摘抄至此，共勉之！------------------------------------------------------------...&nbsp;&nbsp;<a href='http://www.cppblog.com/xmli/archive/2010/11/25/134594.html'>阅读全文</a><img src ="http://www.cppblog.com/xmli/aggbug/134594.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xmli/" target="_blank">李现民</a> 2010-11-25 09:59 <a href="http://www.cppblog.com/xmli/archive/2010/11/25/134594.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item><item><title>二分查找　python</title><link>http://www.cppblog.com/xmli/archive/2008/12/12/69249.html</link><dc:creator>李现民</dc:creator><author>李现民</author><pubDate>Fri, 12 Dec 2008 03:08:00 GMT</pubDate><guid>http://www.cppblog.com/xmli/archive/2008/12/12/69249.html</guid><wfw:comment>http://www.cppblog.com/xmli/comments/69249.html</wfw:comment><comments>http://www.cppblog.com/xmli/archive/2008/12/12/69249.html#Feedback</comments><slash:comments>0</slash:comments><wfw:commentRss>http://www.cppblog.com/xmli/comments/commentRss/69249.html</wfw:commentRss><trackback:ping>http://www.cppblog.com/xmli/services/trackbacks/69249.html</trackback:ping><description><![CDATA[&nbsp; 长时间不训练，感觉退步很多，今天想练一下动态规划发现需要先写一个二分查找，本来python中是有二分查找的bisect模块，不过想了想还是自己写一下吧，要不然更锈了：<br><br>　二分查找算法：<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;binsearch(data,&nbsp;key):<br>&nbsp;&nbsp;&nbsp;&nbsp;i,j</span><span style="color: #000000;">=</span><span style="color: #000000;">0,&nbsp;len(data)</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">&lt;=</span><span style="color: #000000;">j:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mid</span><span style="color: #000000;">=</span><span style="color: #000000;">(i</span><span style="color: #000000;">+</span><span style="color: #000000;">j)</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;data[mid]</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">key:&nbsp;i</span><span style="color: #000000;">=</span><span style="color: #000000;">mid</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">elif</span><span style="color: #000000;">&nbsp;data[mid]</span><span style="color: #000000;">&gt;</span><span style="color: #000000;">key:&nbsp;j</span><span style="color: #000000;">=</span><span style="color: #000000;">mid</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">:&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;mid<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span></div>
<br>　一个加速版的二分查找算法<br>
<div style="border: 1px solid #cccccc; padding: 4px 5px 4px 4px; background-color: #eeeeee; font-size: 13px; width: 98%;"><!--<br><br>Code highlighting produced by Actipro CodeHighlighter (freeware)<br>http://www.CodeHighlighter.com/<br><br>--><span style="color: #0000ff;">def</span><span style="color: #000000;">&nbsp;binsearch(data,&nbsp;key):<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #800000;">'''</span><span style="color: #800000;">假定data为单调非降序列</span><span style="color: #800000;">'''</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;i,j</span><span style="color: #000000;">=-</span><span style="color: #000000;">1</span><span style="color: #000000;">,&nbsp;len(data)&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">i指向data序列第一个元素的前一个位置</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">j指向data序列最后一个元素的后一个位置</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">while</span><span style="color: #000000;">&nbsp;i</span><span style="color: #000000;">+</span><span style="color: #000000;">1</span><span style="color: #000000;">!=</span><span style="color: #000000;">j:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;mid</span><span style="color: #000000;">=</span><span style="color: #000000;">&nbsp;(i</span><span style="color: #000000;">+</span><span style="color: #000000;">j)</span><span style="color: #000000;">&gt;&gt;</span><span style="color: #000000;">1</span><span style="color: #000000;"><br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">(data[mid]</span><span style="color: #000000;">&lt;</span><span style="color: #000000;">key):i</span><span style="color: #000000;">=</span><span style="color: #000000;">mid<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">else</span><span style="color: #000000;">:j</span><span style="color: #000000;">=</span><span style="color: #000000;">mid<br>&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">if</span><span style="color: #000000;">&nbsp;j</span><span style="color: #000000;">==</span><span style="color: #000000;">len(data)&nbsp;</span><span style="color: #0000ff;">or</span><span style="color: #000000;">&nbsp;data[j]</span><span style="color: #000000;">!=</span><span style="color: #000000;">key:<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;</span><span style="color: #000000;">-</span><span style="color: #000000;">1</span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">这时我们可以在j处插入key，同时不破坏data的有序状态</span><span style="color: #008000;"><br></span><span style="color: #000000;">&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #0000ff;">return</span><span style="color: #000000;">&nbsp;j&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;</span><span style="color: #008000;">#</span><span style="color: #008000;">j指向data序列中左数第一个值为key的数据项</span><span style="color: #008000;"><br></span><span style="color: #000000;"><br></span></div>
<br><br><br><br>  <img src ="http://www.cppblog.com/xmli/aggbug/69249.html" width = "1" height = "1" /><br><br><div align=right><a style="text-decoration:none;" href="http://www.cppblog.com/xmli/" target="_blank">李现民</a> 2008-12-12 11:08 <a href="http://www.cppblog.com/xmli/archive/2008/12/12/69249.html#Feedback" target="_blank" style="text-decoration:none;">发表评论</a></div>]]></description></item></channel></rss>