Not Only Algorithm,不仅仅是算法,关注数学、算法、数据结构、程序员笔试面试以及一切涉及计算机编程之美的内容 。。
你的位置:NoAlGo博客 »  2014年12月归档

生产者消费者问题

生产者消费者问题是一个经典的进程同步问题,本文讲解不同生产者消费者问题的解决思路,并提供一个完整的实现代码。

继续阅读»

位运算实现加减乘除四则运算

程序设计中大量使用到加减乘除等四则运算,但有时我们被要求只用位操作来实现这些功能,本文将通过具体代码介绍如何使用位运算实现加减乘除取模和乘方等操作,可以借此看到位运算使用的巧妙之处。

继续阅读»

PING程序实现

PING是一个我们非常熟悉的网络命令了,可以检查网络是否通畅或者网络连接速度,使用起来非常方便。但PING是怎么实现的呢?本文将介绍PING的内部原理并实现一个简单的PING程序。

继续阅读»

取石子游戏

取石子是一种很有意思的游戏,一般给你若干堆石子,两个人根据指定规则轮流从中取若干石子,规定最后取光石子玩家获胜,假定双方玩家都采取最优策略,问先手是否有什么必胜策略。这个游戏看似简单,实则蕴含深刻的数学原理,本文将分析几种常见的取石子游戏的玩法。

继续阅读»

最远点对问题

二维平面上有n个点,怎么寻找距离最远的两个?
前面讨论过最近点对的问题,这里研究其相对的问题,虽然题目类似,但思想方法截然不同,本文将使用graham凸包扫描法和旋转卡壳算法进行求解。

继续阅读»

最近点对问题

二维平面上有n个点,怎么寻找距离最近的两个?
本文将实现一种O(nlogn)时间复杂度的分治算法,具体的思想方法参考了编程之美中寻找最近点对一章。

继续阅读»

C++11的多线程编程

C++11标准直接提供了并发编程的支持,这是C++新标准中非常重要的部分,可以极大的提高程序的可移植性。以前的多线程编程基本上依赖于特定的操作系统,比如Linux环境下使用pthread库。现在有了统一的接口进行实现,本文将通过几个简单的实例介绍常见的多线程编程的使用方法。

继续阅读»

C++11中的lambda表达式

lambda表达式是C++11新增加的一个特性,其允许程序员定义匿名函数,该函数一般比较短小,一次性执行,这样既方便了编程,又能防止外部访问。
本文将通过几个简单的例子说明lambda表达式的使用方法。

继续阅读»

外部排序

外部排序是指大量数据的排序,通常待排序的数据保存在外存储器上(比如硬盘),待排序的文件无法一次装入内存,需要在内存和硬盘之间进行多次数据交换,以达到排序整个文件的目的。外部排序最常用的算法是多路归并排序,本文将通过具体的代码讲解一个简单的外部排序算法实现。

继续阅读»

我的博客

NoAlGo头像编程这件小事牵扯到太多的知识,很容易知其然而不知其所以然,但真正了不起的程序员对自己程序的每一个字节都了如指掌,要立足基础理论,努力提升自我的专业修养。

站内搜索

最新评论