<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[熟能生巧]]></title><description><![CDATA[实践出真知，知行合一！]]></description><link>https://blog.youkuaiyun.com/midgard</link><language>zh-cn</language><generator>https://blog.youkuaiyun.com/</generator><copyright><![CDATA[Copyright &copy; midgard]]></copyright><item><title><![CDATA[个性化你的shell提示符]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/7239656</link><guid>https://blog.youkuaiyun.com/midgard/article/details/7239656</guid><author>midgard</author><pubDate>Tue, 07 Feb 2012 15:54:54 +0800</pubDate><description><![CDATA[看到同事对自己系统（linux）的命令行提示符，修改后有了颜色，还有笑脸
感觉很cool，也仿效搞了一个，
显示策略： 当前用户，时间，当前目录，
如果是普通用户展示一个笑脸 :-) 表示可以随意操作， 并跟随$ 提示符。
如果是超级用户展示一个肃脸:-| 表示要谨慎对待操作，并跟随# 提示符。


在 /etc/profile.d/中新建ps1.sh 文件， 添加下面shell代码]]></description><category></category></item><item><title><![CDATA[二叉排序树binary_sort_tree]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/7099588</link><guid>https://blog.youkuaiyun.com/midgard/article/details/7099588</guid><author>midgard</author><pubDate>Sat, 24 Dec 2011 14:29:56 +0800</pubDate><description><![CDATA[当你希望获取快速的查找时间，快速的插入删除时间，并且遍历是有序的 数据结构， 你需要的就是二叉排序树了。
AVL二叉平衡树，红黑树都是binary sort tree,  这就是STL中的map为什么（中序）遍历，key是有序输出的原因！
注意： 二叉排序树，平均插入，查找O(logn), 但如果不平衡，极端情况，查找为O(n), 一棵斜树。 所以，利用平衡可以提高效率。


为了简化，]]></description><category></category></item><item><title><![CDATA[PageRank算法]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/7061721</link><guid>https://blog.youkuaiyun.com/midgard/article/details/7061721</guid><author>midgard</author><pubDate>Sun, 11 Dec 2011 20:25:22 +0800</pubDate><description><![CDATA[总算有一个周末下午时间，决定亲手把pagerank算法实现一下。 之前只是看过思路，并一直使用同事的实现版本。
 
关于PageRank的介绍，请看
http://zh.wikipedia.org/wiki/PageRank
http://baike.baidu.com/view/1518.htm
 
不多废话了，直接进入正题，C++实现。
公式采用：
PR(A) = (1-d)]]></description><category></category></item><item><title><![CDATA[新的开始]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/6941732</link><guid>https://blog.youkuaiyun.com/midgard/article/details/6941732</guid><author>midgard</author><pubDate>Sun, 06 Nov 2011 23:33:11 +0800</pubDate><description><![CDATA[这两年在互联网推荐领域发展，视野，技术水平，接触的人员，较之以前在传统行业，都有了长足的进步。
    今天突然心血来潮，回顾下很久之前写的文章，发现自己曾经很多青涩的地方。但很多内容，现在看来，都仍然对自己是个鞭策。所以，首先感谢优快云提供这样一个开放的，优秀的技术平台，分享信息，同时记录了我一些难忘文章。
    最近看了一些书，不仅仅技术上，还包括文学、管理等等，最大的感触就是，阅读、]]></description><category></category></item><item><title><![CDATA[推荐技术的应用]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/6624844</link><guid>https://blog.youkuaiyun.com/midgard/article/details/6624844</guid><author>midgard</author><pubDate>Fri, 22 Jul 2011 09:44:05 +0800</pubDate><description><![CDATA[很久不来了，发现csdn有了改版， 正巧最近两年研究推荐技术，有了一定积累后，也希望能分享些经验。顺便试试新版编辑是否方便，高效。开篇，不介绍各种推荐算法，技术相关知识了。 随笔一些实际商业领域应用需求。主要用于：电子商务， 新闻，媒体广告电子商务：  首先参考下  数据驱动B2]]></description><category></category></item><item><title><![CDATA[大数幂运算]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4724308</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4724308</guid><author>midgard</author><pubDate>Sat, 24 Oct 2009 21:49:00 +0800</pubDate><description><![CDATA[大数幂运算 源于POJ1001题目：http://acm.pku.edu.cn/JudgeOnline/problem?id=1001这个题目可以从简单问题一步一步入手。1. 先仿效上一篇计算大整数加法，计算一个大整数与一个个位数字的乘积 string Mul_singleInt(const string& s1, int n);2. 循环利用大整数加法计算大整数乘积 string Mul_i]]></description><category></category></item><item><title><![CDATA[大非负整数加法运算]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4394141</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4394141</guid><author>midgard</author><pubDate>Thu, 30 Jul 2009 15:15:00 +0800</pubDate><description><![CDATA[大数运算是一类算法应用，在密码学中比较常用。这里先完成一个最基本，最简单的大数运算-大非负整数加法运算。大整数通常指计算结果超出int存储范围的，亦即会产生溢出的情况。比如32位无符号整数最大为：2^32-1=4294967295所以接下来的算法就是要完成诸如4294967200 + 4294967220 = 8589934420这样的运算。     解题步骤：首先]]></description><category></category></item><item><title><![CDATA[所有点对的最短路径-FloydWarshall算法]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4314869</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4314869</guid><author>midgard</author><pubDate>Thu, 02 Jul 2009 01:57:00 +0800</pubDate><description><![CDATA[找出所有点对的最短路径，经典算法是Floyd-Warshall，关于该算法，《算法导论》等书籍给了充分的推理介绍，但均显得过于理论化，阅读起来不容易理解。 以下我以一个例子，详细阐述该算法的解题过程，力图将跳跃性降至最低，所以只阐述算法实现过程，详细证明过程请还是参考书籍。 例图选择《算法导论》的图25-1：  首先要明确，这里的最短路径均为简单路径，即：一条路径最多每个顶]]></description><category></category></item><item><title><![CDATA[找最近点对问题-分治算法的应用]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4199043</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4199043</guid><author>midgard</author><pubDate>Mon, 18 May 2009 19:13:00 +0800</pubDate><description><![CDATA[     分治算法的基本思想是：    分（divide）：递归求解子问题，即：分解+求解，将问题分解为k个方便求解的小问题。    为什么说是递归求解呢，这里可以看作将一个问题分2个子问题，如果2个子问题还是大，再继续分成4个子问题，直到分解到能方便求解的小问题。也就是说分治算法是含有2个以上的递归运算，只有一个递归的例程不能算做分治算法。    治（conquer）：从子问题构]]></description><category></category></item><item><title><![CDATA[单源加权图最短路径问题2-BellmanFord算法 ]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4168262</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4168262</guid><author>midgard</author><pubDate>Mon, 11 May 2009 16:24:00 +0800</pubDate><description><![CDATA[之前提到Dijkstra算法不能解决权值为负的情况。    Bellman-Ford算法能在更一般的情况下解决最短路径问题，即：允许权值为负。注意，最短路径问题实际上均不允许有负值回路（当然是从源点可达的），因为这时不存在最短路径。总会有更短的办法-多绕负边回路走几趟就是了。    首先介绍一下松弛技术（Relaxation）对每个顶点，都设置一个属性d[v], 用来描述从源点]]></description><category></category></item><item><title><![CDATA[单源加权图最短路径问题(权值非负)-Dijkstra算法]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4152336</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4152336</guid><author>midgard</author><pubDate>Tue, 05 May 2009 17:24:00 +0800</pubDate><description><![CDATA[解决单源最短路径的一个常用算法叫做：Dijkstra算法，这是一个非常经典的贪心算法例子。注意：这个算法只对权值非负情况有效。在每个阶段，Dijkstra算法选择一个顶点v，它在所有unknown顶点中具有最小的distance，同时算法将起点s到v的最短路径声明为known。这个算法的本质就是 给定起点，然后假设你有一个点集（known点集），对这个点集中的点，我们已经求出起点到其的]]></description><category></category></item><item><title><![CDATA[无权最短路径-广度优先搜索]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4141087</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4141087</guid><author>midgard</author><pubDate>Thu, 30 Apr 2009 23:54:00 +0800</pubDate><description><![CDATA[图的搜索技术是图算法领域的核心。许多图算法的开始，都是通过搜索输入的图来获取图结构信息，另外还有些图的算法实际上是通过图搜索算法经过简单扩展而成的。广度优先搜索的执行方法：从任意点s出发，先遍历与s相邻的点，然后再遍历于相邻的点相邻的点。注意有向图必须是顺方向的邻接点。详细方法，参考任何数据结构书吧。不赘述了。为什么说广度优先搜索可以用来求无权最短路径呢？因为，广度优先搜索每次都会先发现距离s]]></description><category></category></item><item><title><![CDATA[拓扑排序]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4101025</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4101025</guid><author>midgard</author><pubDate>Wed, 22 Apr 2009 17:07:00 +0800</pubDate><description><![CDATA[拓扑排序是对有向无环图的一种排序。表示了顶点按边的方向出现的先后顺序。如果有环，则无法表示两个顶点的先后顺序。在现实生活中，也会有不少应用例子，比如学校课程布置图，要先修完一些基础课，才可以继续修专业课。一个简单的求拓扑排序的算法：首先要找到任意入度为0的一个顶点，删除它及所有相邻的边，再找入度为0的顶点，以此类推，直到删除所有顶点。顶点的删除顺序即为拓扑排序。    很容易得到拓扑排]]></description><category></category></item><item><title><![CDATA[构建一个图]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4096537</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4096537</guid><author>midgard</author><pubDate>Tue, 21 Apr 2009 09:42:00 +0800</pubDate><description><![CDATA[在练习图的各种算法时，比如深度优先搜索，拓扑排序，最短路径，最小生成树等等，都希望得到有效的验证，这就必须先自己构建出图的存储结构。才能将图实例信息用于算法验证。要完整的构建一个图比较复杂，这里只是给出一个非常简单的例子，讲述如何使用邻接表构建一个图。基本是C语言实现。          此例，我们认为v1-v7的位置信息为 1-7，即v1位置为1，v2位置为2，。。。  ]]></description><category></category></item><item><title><![CDATA[深入学习算法的一点拙见]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4084884</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4084884</guid><author>midgard</author><pubDate>Thu, 16 Apr 2009 17:33:00 +0800</pubDate><description><![CDATA[今天实在是头脑不听使唤了，没力气看书，写代码了。写点总结吧。都说算法是内功，究竟练到什么程度才算修成了呢？ 为什么要学习，强化算法？首先强调的是，下面的原因均是建立在算法熟练到一定程度后的效果。不熟的话，未见得能达到效果。这些原因很现实。但很多程序员却不知道或不以为然。比较世俗的方面，顶级软件公司笔试，面试会问到。别说你不想去谷歌，百度，微软，如果真的没想过，我希望你能]]></description><category></category></item><item><title><![CDATA[图的存储结构]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4076619</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4076619</guid><author>midgard</author><pubDate>Wed, 15 Apr 2009 17:45:00 +0800</pubDate><description><![CDATA[     图的基本概念http://hi.baidu.com/%C8%ED%BC%FE%B8%D6%C7%D9%CA%A6/blog/item/f7b50c07791b8ec57a8947ec.html     图,无向图G = （V, E）有向图 G =     V是点集vertex， E是边集edge     图通常有两种存储方法。邻接矩阵， 多用于稠密图，记录每两个顶点之间边]]></description><category></category></item><item><title><![CDATA[如何使用ACM练习算法]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4073319</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4073319</guid><author>midgard</author><pubDate>Tue, 14 Apr 2009 16:40:00 +0800</pubDate><description><![CDATA[简单介绍下ACM，汗！还得现搜索一下。ACM(Association for Computing Machinery)国际计算机组织通常说的ACM是指 ACM国际大学生程序设计竞赛基本可以看作是写各种算法的比赛。 国内常用的ACM练习站：北大的比较有人气。http://acm.pku.edu.cn/JudgeOnline/刚刚注册了下，体验了一下流程。1 先Register]]></description><category></category></item><item><title><![CDATA[堆排序]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4070074</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4070074</guid><author>midgard</author><pubDate>Mon, 13 Apr 2009 18:02:00 +0800</pubDate><description><![CDATA[     要实现堆排序首先要理解堆相关的一些重要概念。    （1）什么是堆，堆于优先队列的关系？    堆实际上是优先队列数据结构的实现，也可以说，堆是具有优先队列性质的容器实现。    优先队列是允许下面两个操作的数据结构：InsertDeleteMin    即    DeleteMin     尤其要强调的是DeleteMin的操作，这步操作目的是找]]></description><category></category></item><item><title><![CDATA[快速排序]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4060027</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4060027</guid><author>midgard</author><pubDate>Thu, 09 Apr 2009 16:51:00 +0800</pubDate><description><![CDATA[排序算法是各种笔试，面试最常考到的一类题目，提到排序，一定会要求提供一种高效的方法，所以就不得不说一下快速排序了。快嘛！写出快速排序一定要先理解什么是枢纽元（pivot），枢纽元就是每次执行快排需要参照的那个元素。最常见的选择pivot的方法是选择第一个元素。此外还有最后一个元素，随机选择，中值法等等。比如 20,34,4,53,43,42,6,67,193  选择20为pivot经过]]></description><category></category></item><item><title><![CDATA[如何构建二叉树]]></title><link>https://blog.youkuaiyun.com/midgard/article/details/4058766</link><guid>https://blog.youkuaiyun.com/midgard/article/details/4058766</guid><author>midgard</author><pubDate>Thu, 09 Apr 2009 10:18:00 +0800</pubDate><description><![CDATA[说干就干，先上一篇昨天写的文章。 以一道题目来说明如何建立二叉树。  题目：已知先序遍历，中序遍历 建立二叉树，然后求后序遍历。  e.g.    先序：a b d e i j c f g           中序：d b i e j a f c g           后序：d i j e b f g c a //期望结果 解法：先序中的首元素a 必为该二叉树的根结点]]></description><category></category></item></channel></rss>