算法
小小蜗牛
这个作者很懒,什么都没留下…
展开
-
中缀表达式转换为后缀表达式
一、基本概念中缀表达式如1*2+(2-1), 其运算符一般出现在操作数之间, 因此称为中缀表达式,也就是大家编程中写的表达式。将中缀表达式进行改写,变为后缀表达式 如上面的表达式1*2+(2-1), 就变为12*21-+;后缀表达式中不含有括号, 且后缀表达式的操作数和中缀表达式的操作数排列次序完全相同, 只是运算符的次序发生了改变。如果你想做一个计算器,那么首先需要用户输入一串表达式原创 2013-02-26 13:32:58 · 799 阅读 · 0 评论 -
排序算法代码--Java
一、 public void bubbleSort(int[] array){ int len = array.length; int temp = 0; //循环次数:array.length for(int i = 0; i < len; i ++){ //每次循环体内将数组前len-i个数中最大的数移动到array[len-i-1]的位置上 for(int j = 1原创 2013-08-18 20:32:57 · 794 阅读 · 0 评论 -
poj--1006
Description人生来就有三个生理周期,分别为体力、感情和智力周期,它们的周期长度为23天、28天和33天。每一个周期中有一天是高峰。在高峰这天,人会在相应的方面表现出色。例如,智力周期的高峰,人会思维敏捷,精力容易高度集中。因为三个周期的周长不同,所以通常三个周期的高峰不会落在同一天。对于每个人,我们想知道何时三个高峰落在同一天。对于每个周期,我们会给出从当前年份的第一天开始,到出现高原创 2013-08-12 19:30:56 · 712 阅读 · 0 评论 -
通过位运算实现加减法
这里实现这样一个算法:不使用加减乘除,只通过位运算,实现整型的加法。原理:异或运算也成为半加法,它本质上是不带进位的加法,而需要进位的位置可以通过与运算得出;将异或运算的结果与与运算后左移一位的结果重新相加;通过这样反复的相加过程,与运算的结果一定会在不超过32此加法后为零(假设int型占32个bit),这个就可以作为循环结束的条件。代码如下:#include int ad原创 2013-07-02 19:29:55 · 1440 阅读 · 0 评论 -
查找两数之和等于给定值
第14题:题目:输入一个已经按升序排序过的数组和一个数字,在数组中查找两个数,使得它们的和正好是输入的那个数字。要求时间复杂度是O(n)。如果有多对数字的和等于输入的数字,输出任意一对即可。例如输入数组1、2、4、7、11、15和数字15。由于4+11=15,因此输出4和11。#include //假设此数组是按照升序排列void find_two_numb原创 2013-05-06 21:33:12 · 1054 阅读 · 0 评论 -
整数的二进制表示中1的个数
一、问题描述题目28:整数的二进制表示中1的个数输入一个整数,求该整数的二进制表达中有多少个1。例如输入10,由于其二进制表示为1010,有两个1,因此输出2。 二、算法描述此问题比较基础,利用右移运算符就可以解决:以二进制表示的整数,可以通过判断它的奇偶性就可以确定它的最低位是否为1;然后右移一位,再判断它是否为1;直到这个数为零时可停止。 三、源代码#inc原创 2013-05-05 15:52:57 · 775 阅读 · 0 评论 -
求矩阵中最大二维矩阵(元素和最大)
一、问题描述题目35. 求一个矩阵中最大的二维矩阵(元素和最大)如:1 2 0 3 42 3 4 5 11 1 5 3 0中最大的是:4 55 3要求:(1)写出算法;(2)分析时间复杂度;(3)用C写出关键代码 二、算法分析解决此问题的方法比较简单:计算所有可能的二维矩阵元素和,选出其中最大的即可。详细方案:将原矩阵的数据保存在origin原创 2013-05-04 19:01:09 · 2568 阅读 · 0 评论 -
二叉数的创建
实现一种创建二叉树的方法。输入形式如下:8 7 3 1 # 5 6 2 4 # # # # 9 @,@代表输入结束,#代表此节点为空。实现方法:1.遍历输入数组,若当前为1.若输入第一个字符为@,则返回空树2.将第一字符生成树节点,作为树的根节点,并将其放入一个字符队列queue中3.遍历输入字符数组a.若当前输入为@,则结束程序并返回根节点b.取出队列中字符,若为#,原创 2013-03-26 17:54:40 · 683 阅读 · 0 评论 -
1到n的全排列实现
对于1到n的全排列问题,常见的是用递归的方法输出所有的排列,本文是一种非递归的实现方法。具体原理如下:已知共有n!个排列方式,可以对这些排列方式编号:0到(n!-1),每个编号唯一地对应一个排列方式。循环地根据每个编号来还原出它所对应的排列方式即可。如何编号呢?以n=4为例:1234--0 1243--1 1324--2 1342--3 1423--4原创 2013-01-19 15:31:48 · 2724 阅读 · 0 评论 -
左旋转字符串
一、问题描述定义字符串的左旋转操作:把字符串前面的若干个字符移动到字符串的尾部。如把字符串abcdef左旋转2位得到字符串cdefab。请实现字符串左旋转的函数,要求对长度为n的字符串操作的时间复杂度为O(n),空间复杂度为O(1)。二、算法分析实现此函数的功能并不复杂,复杂之处在于对函数在时间和空间上提出的要求。看到别人提出了一种很好的算法,能够在时间和空间上满足要求原创 2013-02-02 20:21:45 · 702 阅读 · 0 评论 -
中缀表达式转换为前缀表达式
一、问题描述将中缀表达式转换为前缀表达式如:将2*3/(2-1)+5*(4-1)转化为+/*23-21*5-41二、算法流程1)求输入串的逆序。2)检查输入的下一元素。3)假如是操作数,把它添加到输出串中。4)假如是闭括号,将它压栈。5)假如是运算符,则i)假如栈空,此运算符入栈。ii)假如栈顶是闭括号,此运算符入栈。iii)假如它的优先原创 2013-03-01 08:57:03 · 1467 阅读 · 0 评论 -
后缀表达式求值
一、问题描述将用户输入的前缀表达式转化为后缀表达式后,就可以计算表达式的值。本文给出后缀表达式求值的具体实现。例:有前缀表达式:8-(3+2*6)/5+4;转化为后缀表达式后为:8 3 2 6 * + 5 / - 4 + 二、算法实现1.后缀表达式存储在一维数组中,遍历数组;2.遍历过程中,当遇到的是数字时,则直接将其push到栈中;3.当遇到的是标点符号时,则依次原创 2013-02-27 19:21:40 · 804 阅读 · 0 评论 -
Topcoder--SRM144 div1
Problem Statement Let's say you have a binary string such as the following: 0111000原创 2013-09-13 20:58:59 · 785 阅读 · 0 评论