- 浏览: 132659 次
- 性别:
- 来自: 成都
-
最新评论
-
yi_chao_jiang:
你好,多谢分享,问个问题,在上传数据的时候判断文件是否有上传记 ...
断点续传和下载原理分析 -
a41606709:
为什么我的tabhost显示不出来? 怎么设置在全部页面中让他 ...
TabActivity中的Tab标签详细设置 -
Zero颴:
大神篇,思路,配图都很清晰,perfect!
Android事件模型之interceptTouchEvnet ,onTouchEvent关系正解 -
QAZ503602501:
牛死人了!!!
B-树 -
mengsina:
很牛的文档。数学功底好啊
Android Matrix理论与应用详解
文章列表
1.算法描述
例如a+b*c这是常见的中缀表达式,但是为了方便计算,在计算机中常要转换为后缀表达式abc*+的形式,那
如何转换呢?
用到的关键数据结构:栈
转换的关键原则:
1.优先级判断:关键是比较运算符的优先级,谁的优先级高,谁就出现在前面上面的表达式中,有括号的时候括号优先级最高,*
/次之,+-最后. 在上面的表达式中+的优先级不如*的高,因此,在后缀表达式中*出现在+前面,
2.操作数处理:遇到操作数的时候总是直接输出,不做任何比较
3.括号处理:遇到左括号总是直接入栈,遇到右括号的时候总是弹栈,一直弹到遇到一个左括号
4.优先级处理:遇到操 ...
1.算法描述
计算后缀表达式的值
2.事例
如:(2+3)*5--->后缀表达式:23+5*,或者523+*
在计算机中不能直接处理算术表达式,我们就转换为后缀表达式利用栈来解决这个问题
3.思想
利用数据结构栈
a.后缀表达式依次入栈,如果遇到操作符,就将栈顶两个元素出栈,计算结果在入栈。
b.循环进行,直到栈中只有一个元素,就是结果
4.算法
异常处理类:
#ifndef DSEXCEPTIONS_H
#define DSEXCEPTIONS_H
//#include <exception>
class StackOv ...
1.描述
vector的基本操作实现(包括迭代器)
2.基本操作
3.代码
#ifndef DS_EXCEPTIONS_H
#define DS_EXCEPTIONS_H
class UnderflowException { };
class IllegalArgumentException { };
class ArrayIndexOutOfBoundsException { };
class IteratorOutOfBoundsException { };
class IteratorMismatchException { };
class It ...
1.算法描述
数据结构与算法分析C++版:3.11
实现一个有序单链表,要求能返回链表大小,打印链表,检测x是否在链表(在则删除,否则添加)
2.实现
List.h
#ifndef LIST_H
#define LIST_H
#include <iostream>
template<class T>
...
转载自:http://blog.csdn.net/zhongjiekangping/article/details/5624922
众所周知当使用一个容器的insert或者erase函数通过迭代器插入或删除元素"可能"会导致迭代器失效,因此很多建议都是让我们获取insert或者erase返回的迭代器,以� ...
1.算法描述
简单的游戏:有N个人坐成一圈,编号1-N、从编号为1的人开始传递热马铃薯。M次传递之后,持有马铃薯的人退出游戏,圈缩小,然后游戏从退出人下面的人开始,继续进行,最后留下的人获胜。如,M=0, N=5则参加游戏的人依次退出,5号获胜。M=1,N=5则退出顺序是2,4,1,5.
2.算法分析
该算法使用一个没有头指针的循环链表完成,移动的过程计数,如果计数为M,则将其移除并从下一位继续开始,否则继续。过程非常简单,主要考察指针的运用。当然还可以使用数组实现,不过移动所花费开销非常大!不推荐使用数组。
该算法的复杂度为O(n),直接对链表操作。
3.代码
# ...
1.利用非面向对象定义节点Node
下面是头文件LinkList.h
#ifndef LinkList_H
#define LinkList_H
template<class T>
struct Node{
Node<T>* next;
T data;
};
template<class T>
class LinkList{
public:
LinkList(); //建立只有头结点的空链表
LinkList(T a[], int n); //建立有n个元素的单链表
~LinkList() ...
参考链接:
a.http://www.programfan.com/blog/article.asp?id=13086
b.http://blog.csdn.net/hhygcy/article/details/3950158
1.对(http://hao3100590.iteye.com/blog/1548135)中问题6:最长递增子序列的改进,减少时间复杂度
算法的思想:
它不是使用的动态规划法,而是普通的算法思想,就是在数组中直接存储最长递增子序列,在循环的过程中不断的查找插入位置,直到最终找到。下面列出实现的过程:
从上面的过程可以看出该算法的实现过程,在查找s ...
该文章转载自:http://www.cppblog.com/Fox/archive/2008/05/07/Dynamic_programming.html
非常感谢!
以前在学习非数值算法的时候,曾经了解过动态规划算法(Dynamic programming),以下是对Wikipedia上动态规划的翻译,图也是Wikipedia上的,仓促行文,不到之处,请方家指正。
这篇文章的术语实在是太多了,所以我在文中加入了少量注释,一律以粗斜体注明。
1.算法描述
有序(行有序,列有序,且每行从左至右递增,列从上至下递增)二维数组查找,要求复杂度O(n)
2.使用到的相关知识:
结构体定义和使用,二维数组传递(http://blog.csdn.net/yzhhmhm/article/details/2045816)
3.使用数组名传递
这个的不便之处很明显,一旦确定就是不能设置列值
//使用数组名实现(不便之处很明显:列值确定了,不能灵活)
loc* findValue(int a[][5], int row, int value){
int col = sizeof(a)/sizeof(int) ...
转载自:http://www.pconline.com.cn/pcedu/empolder/gj/c/0503/567930.html
1.结构体定义
简单的来说,结构体就是一个可以包含不同数据类型的一个结构,它是一种可以自己定义的数据类型,它的特点和数组主要有两点不同,首先结构� ...
算法描述:生成前N个整数的随机置换,如{4,3,1,5,2},{4,5,3,2,1}是合法的,而{5,4,1,1,2}不合法,因为3没出现。
1.基本算法
该算法效率比较低,O(n*n*logn),主要就是随机的生成一个数,然后再一直数组中去检测是否存在,如果不存在� ...
from:http://hi.baidu.com/hayrek/blog/item/4ed2749a5e8307b2c8eaf4c3.html
c++中malloc与free
一、malloc()和free()的基本概念以及基本用法:
1、函数原型及说明:
void *malloc(long NumBytes):该函数分配了NumBytes个字节,并返回了指向这块内存 ...
1.算法描述(算法分析2.26)
大小为N的数组A,其主元素是一个出现超过N/2次的元素(从而这样的元素最多只有一个)。例如,数组
3,3,4,2,4,4,2,4,4只有一个主元素4; 3,3,4,2,4,4,2,4没有主元素
求出主元素,没有请指出
2.书中列出了一种算法,暂且叫递归法,这可以自己看书,其复杂度也只有O(n)
下面介绍两种其他的方法。
在网上还有其他一些方法:http://wintys.blog.51cto.com/425414/100688/
3.方法一
思想就是利用主元素的个数是>N/2的这一性质,复杂度O(n)
*首先,随 ...
1.动态分配实例模板:
void alloc(int n){
//步骤1,分配(放于堆空间中)
int *value = new int[n];//分配数组
int *a = new int(4);//分配指针
//步骤2,初始化(动态分配不会自动初始化)
for(int i=0; i<n; i++) value[i]=0;
//步骤3,释 ...