随笔分类 -  Algorithms

some simple Algorithms maybe helpful
摘要:我们用煎蛋来打个比方。煎蛋的一般步骤是: 1.>取煎锅。 2.>取油。 ->我们有油吗? ****有,把油倒入煎锅。 ****没有,我们要去买油吗? #########要买,出去买油。 #########不买,可以终止煎蛋。 3.>打开煤气灶,等等。 对于一个问题(例如煎蛋),我们所做的是给出解决这个问题的具体步骤。算法的正式定义如下: 【对于给定问题,算法是一步步解决问题的指令】 阅读全文
posted @ 2015-07-30 15:24 programnote 阅读(491) 评论(0) 推荐(0)
摘要:【这里我们将要讨论一些高级的位操作技巧,如果能适当使用会大大提高你程序的运行速度】 我们已经讨论了一些简单的位操作方法,如果你还不熟悉位操作可以先浏览一下【你必须知道的简单的位操作技巧】,这里我们接着往下说: 技巧6:将最右边的数值为1的bit位设为0 y = x & (x-1) 终于开始有点意思了,技巧1到技巧5说实话是有点小儿科。 这条语句将从右至左看值为1的比特位置为0。例如:整数001... 阅读全文
posted @ 2015-07-30 14:41 programnote 阅读(2255) 评论(0) 推荐(1)
摘要:【这里我们将讨论一些位操作技巧,如果使用得当会有助于提高你编出的程序执行速度】我们编程或多或少会使用到位操作,位操作是编程中处理整型数据高效方法。例如,想要求出一个整数二进制位中值为 1 的个数,简单的方法是用一个循环,其实我们用一两个位操作的小技巧就能高效的解决。假设读者已经知道整型数据二进制补码... 阅读全文
posted @ 2015-07-29 16:39 programnote 阅读(5181) 评论(0) 推荐(0)
摘要:【问题:给定无符号整型数据,需要你翻转它的比特位(依中心镜像翻转)】 这个问题有很多解决方法,这里介绍利用异或(xor)运算解决这个问题的小技巧。 提示:怎样交换第i位比特和第j位比特数据呢?试着想想怎样用异或(xor)运算实现。 异或运算技巧: 实现翻转我们需要将这个数据的前n/2(假设数据有效位数为n,二进制)有效位和后n/2有效位进行交换。写一个函数swapBits(i, j),用来交换第i... 阅读全文
posted @ 2015-07-29 13:23 programnote 阅读(961) 评论(0) 推荐(0)
摘要:【这里我们将要介绍一个最简单也最快速的转换字母大小写的方法,提示:使用位技巧】【以下代码用C语言编写】在编程的时候我们经常遇到需要转换字母大小写的情况,有时候就是这个问题,有时候是为了解决其它问题。大家应该能想到一些方法。我将要介绍一种最优美的方法,也就是用比特技巧解决问题。我们已近讨论过一些比特操... 阅读全文
posted @ 2015-07-29 12:02 programnote 阅读(3692) 评论(0) 推荐(0)