数据结构与算法
想看焰火吗
这个作者很懒,什么都没留下…
展开
-
中缀表达式转后缀表达式
算法:中缀表达式转后缀表达式的方法:1.遇到操作数:直接输出(添加到后缀表达式中)2.栈为空时,遇到运算符,直接入栈3.遇到左括号:将其入栈4.遇到右括号:执行出栈操作,并将出栈的元素输出,直到弹出栈的是左括号,左括号不输出。5.遇到其他运算符:加减乘除:弹出所有优先级大于或者等于该运算符的栈顶元素,然后将该运算符入栈6.最终将栈中的元素依次出栈,输出。转载 2017-04-22 08:16:12 · 237 阅读 · 0 评论 -
寻找多数元素
在原序列中去除两个不同的元素后,那么在原序列中的多数元素在新序列中还是多数元素算法基本思路:(1)在寻找多数元素的过程中,将计数器置1,遇到相同元素则计数器加1,遇到不同元素则计数器减1,一直到计数器等于0或遍历完整个序列。由此可见,计数器的值表示当前元素抵消掉不同元素后的出现次数;(2)当计数器在遍历完整个序列前就已经是0,则忽略掉已经遍历过的元素(可以看作两两抵消不转载 2017-04-23 11:38:45 · 715 阅读 · 0 评论 -
如何快速判断一个数是不是2的幂、3的幂、4的幂
1、判断是不是2的幂将2的幂写成二进制很容易看出,2的幂的二进制只有一个1,其余全是0,如下所示:000010000...00而将2的幂的二进制减1,其二进制变为:000001111...11所以判断一个数是不是2的幂的方法为使用按位与操作,如果结果为0,则是2的幂:n & (n-1)2、判断是不是4的幂转载 2017-12-20 10:09:31 · 1216 阅读 · 0 评论 -
排序算法(三)--关于快速排序Partition的思考
上一章我们讲解了快速排序,其中快速排序一趟划分的算法Partition.Partition可不只用在快速排序中,还可Selection algorithm(在无序数组中寻找第K大的值)中.甚至有可能正是这种通过一趟扫描来进行分类的思想激发Edsger Dijkstra想出了Three-way Partitioning,高效的解决了Dutch national flag problem问题.接下来我转载 2017-12-19 09:35:28 · 772 阅读 · 0 评论