自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(24)
  • 收藏
  • 关注

原创 自己学驱动2——ARM汇编

常用ARM汇编指令1.相对跳转指令b和blbl指令除了跳转之外,还将返回地址(bl的下一条指令的地址)保存在lr寄存器中。这两条指令的跳转范围都是当前指令的前后32MB的空间。这个32MB的来源是b和bl指令的机器码格式为:[24]:0,跳转(branch即b);1,跳转并返回连接地址(branch with link即bl)。[23:0]:一共24个bits,在计算的时候需要

2014-08-22 16:40:47 1442

原创 自己学驱动1——基本命令和链接文件

1.安装linux虚拟机。(1)在vmvare中安装ubuntu主机。(2)安装NFS、FTP、SSH、SMABA服务等。(3)安装交叉编译工具链。(4)安装ncurses,make menuconfig会用到的一个动态库。2.代码处理的四个步骤预处理(处理宏定义等.i文件)->编译(转化为汇编)->汇编(汇编转化为机器码.o文件)->链接(生成可执行文件)。3.编译时

2014-08-22 16:06:08 977

原创 通信协议中的转义符

通信协议中的转义符作用:在通信协议中用在协议中使得通信的内容更加安全可靠。举例说明:假设现在需要定制一个通信协议,需要的最基本的就是一个帧头和帧尾的标志,因为通信的接收方才知道什么时候是通信的开始和结束。那么假设帧头(通信的开始)为0x02(也可以是其他),帧尾为0x03(也可以是其他),粗略的一看是没有问题的,但是试想如果在帧头和帧尾的中间数据出现0x02或者0x03的时候整个通信过程将

2014-08-21 11:21:13 5713 4

原创 RS-232协议和RS-485协议

RS232RS232是一种异步传输标准接口。通常 RS-232 接口以9个引脚 (DB-9) 或是25个引脚 (DB-25) 的型态出现 。RS232最常用的连接方式是三根线:一条发送线、一条接收线及一条地线。电平信号:逻辑1(MARK)=-3V~-15V,逻辑0(SPACE)=+3~+15V传输距离:RS-232-C标准规定,驱动器允许有2500pF的电容负载,通信距离将受此电容

2014-08-21 10:47:56 6308 1

原创 排序——基数排序

基数排序(radix sort)是属于“分配式排序”(distribution sort),基数排序法又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用。排序思想:        首先按照数据的最低位(个位)将数据分配到0~9十个桶中,然后依次将这些桶中的数据取出来得到按照个位排序后的结果,然后

2014-08-19 10:57:47 1036 4

原创 排序——归并排序

归并(Merge)排序法是将两个(或两个以上)有序表合并成一个新的有序表,即把待排序序列分为若干个有序的子序列,再把有序的子序列合并为整体有序序列。归并排序是建立在归并操作上的一种有效的排序算法。该算法是采用分治法(Divide and Conquer)的一个非常典型的应用。将已有序的子序列合并,得到完全有序的序列;即先使每个子序列有序,再使子序列段间有序。若将两个有序表合并成一个有序表,称为二路

2014-08-18 12:09:39 882

原创 排序——快速排序法

快速排序法基本思想:        快速排序(Quicksort)是对冒泡排序的一种改进。由C. A. R. Hoare在1962年提出。它的基本思想是:通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以递归进行,以此达到整个数据变成有序序列。程序代码:#include

2014-08-15 16:07:11 821

原创 排序——冒泡排序(三种方法)

冒泡排序的基本思想:        在要排序的一组数中,对当前还未排好序的范围内的全部数,自上而下对相邻的两个数依次进行比较和调整,让较大的数往下沉,较小的往上冒。即:每当两相邻的数比较后发现它们的排序与排序要求相反时,就将它们互换。关于程序中4中冒泡排序写法的说明:bubble_sort1:基本的冒泡排序的写法。bubble_sort2:基本冒泡排序的不同写法,基本的冒泡排序是每

2014-08-15 12:13:20 5717

原创 排序——选择排序

在要排序的一组数中,选出最小(或者最大)的一个数与第1个位置的数交换;然后在剩下的数当中再找最小(或者最大)的与第2个位置的数交换,依次类推,直到第n-1个元素(倒数第二个数)和第n个元素(最后一个数)比较为止。程序流程:第一趟,从n 个记录中找出关键码最小的记录与第一个记录交换;第二趟,从第二个记录开始的n-1 个记录中再选出关键码最小的记录与第二个记录交换;以此类推.....

2014-08-14 15:50:29 903

原创 排序——希尔排序

希尔排序(Shell Sort)是插入排序的一种。是针对直接插入排序算法的改进。该方法又称缩小增量排序,因DL.Shell于1959年提出而得名。基本思想:    先取一个小于n的整数d1作为第一个增量,把文件的全部记录分组。所有距离为d1的倍数的记录放在同一个组中。先在各组内进行直接插入排序;然后,取第二个增量d2希尔排序的实现代码:#include using name

2014-08-14 12:05:01 1063

原创 八皇后问题——递归+回溯法

八皇后问题,是一个古老而著名的问题,是回溯算法的典型案例。该问题是国际西洋棋棋手马克斯·贝瑟尔于1848年提出:在8X8格的国际象棋上摆放八个皇后,使其不能互相攻击,即任意两个皇后都不能处于同一行、同一列或同一斜线上,问有多少种摆法。 高斯认为有76种方案。1854年在柏林的象棋杂志上不同的作者发表了40种不同的解,后来有人用图论的方法解出92种结果。求解过程:    采用遍历的办法,就是

2014-08-13 17:33:48 1829

原创 汉诺塔——递归

经典汉诺塔问题描述:假设有3个分别命名为X,Y,Z的塔座,在塔座X上插有n个直径大小各不相同、依小到大编号为1,2,……n个圆盘。现要求将X轴上的n个圆盘移至塔座Z上并仍按同样顺序叠排,圆盘移动时必须遵守下列规则:(1)每次只能移动一个圆盘;(2)圆盘可以插在X,Y和Z中的任一塔座上;(3)任何时刻都不能将一个较大的圆盘压在较小的圆盘之上。求n个盘至少需移动的次数。分析:设

2014-08-13 12:04:08 891

原创 排序——堆排序-大根堆(大顶堆)

1.小根堆若根节点存在左子女则根节点的值小于左子女的值;若根节点存在右子女则根节点的值小于右子女的值。2.大根堆若根节点存在左子女则根节点的值大于左子女的值;若根节点存在右子女则根节点的值大于右子女的值。3.结论(1)堆是一棵完全二叉树(如果公有h层,那么1~h-1层均满,在h层连续缺失若干个右叶子)。(2)小根堆的根节点的值是最小值,大根堆的根节点的值是最大值。(3)

2014-08-12 12:46:40 22759 6

原创 笔试题&面试题:设计一个复杂度为n的算法找到单向链表倒数第m个元素

设计一个复杂度为n的算法找到单向链表倒数第m个元素.最后一个元素假定是倒数第0个.提示:双指针查找相对于双向链表来说,单向链表只能从头到尾依次访问链表的各个节点,所以如果要找链表的倒数第m个元素也只能从头到尾进行查找,在查找的过程中,设定两个指针,其中p指针指向当前访问的节点,q指针指向p之前的节点,且两者之间相距m个节点,这样,当p指针指向最后一个节点时,那q指针指向的元素就是倒

2014-08-10 11:43:17 3353

原创 笔试题&面试题:给定n个数,要求比较次数1.5n同时找出最大值和最小值

写出一个算法,对给定的n个数的序列,返回序列中的最大和最小的数.设计出一个算法,只需要执行1.5n次比较就能找到序列中最大和最小的数吗?能否再少?分析:要求比较次数为1.5n,使用一般的逐个遍历每个元素然后判断其是否为最大最小值是需要2n次的比较的,所以这样的方法是行不通的。现在考虑采用,每次从数组中取出两个元素,判断其大小,然后再分别判断其是否是最大或最小值,这样一次处理两个元素,每一次

2014-08-10 10:50:40 5183

原创 最长公共子序列问题—— 动态规划法

经常会遇到复杂问题不能简单地分解成几个子问题,而会分解出一系列的子问题。简单地采用把大问题分解成子问题,并综合子问题的解导出大问题的解的方法,问题求解耗时会按问题规模呈幂级数增加。    为了节约重复求相同子问题的时间,引入一个数组,不管它们是否对最终解有用,把所有子问题的解存于该数组中,这就是动态规划法所采用的基本方法。【问题】 求两字符序列的最长公共字符子序列问题描述:字符序列的子

2014-08-09 17:19:47 1903

原创 判断一个无符号型整数是否是2^n

题目:给出一个无符号型整数,判读其是否是2^n?

2014-08-09 15:13:43 1116

原创 单源最短路径(Dijkstra)——贪心算法

Dijkstra算法是解单源最短路径问题的贪心算法。其基本思想是,设置顶点集合点集合S并不断地做贪心选择来扩充这个集合。一个顶点属于集合S当且仅当从源到该顶点的最短路径长度已知。初始时,S中仅含有源。设u是G的其一顶点。把从源到u且中间只经过S中顶点的路称为从源到u的特殊路径,并用数组Distance记录当前每个顶点所对应的最短特殊路径长度。Dijkstra算法每次从V-S中取出具有最短特殊路长度

2014-08-09 11:55:56 45950 4

原创 0-1背包问题——动态规划法

问题描述:给定n种物品和一背包。物品i的重量是w[i],其价值为v[i],背包的容量为C。问应如何选择装入背包的物品,使得装入背包中物品的总价值最大?分析:对于一种物品,要么装入背包,要么不装。所以对于一种物品的装入状态可以取0和1。设物品i的装入状态为xi,xi∈ (0,1),此问题称为0-1背包问题。数据:物品个数n=5,物品重量w[5]={2,2,6,5,4},物品价值v[5]={6

2014-08-09 08:23:49 9602 4

原创 二叉树(二)——遍历、深度统计、叶子结点统计、结点统计

1.二叉树的相关算法的实现(链表)。#include #include #define NULL 0typedef struct tree{ int data; struct tree *left, *right;}ElemBT;void create_btree(ElemBT *root, int list[], int n) /*n表示list数组中元素的个数*/{

2014-08-06 10:38:59 2058

原创 二叉树(一)——二叉树的基本实现(数组实现和链表实现)

1.树是一种数据结构,树的一些相关的术语:结点的度:一个结点的后继结点的个数。树的度:树中度值最大的结点的度被称为树的度。树的深度:树的层次数。分支结点:度值大于0的结点,分支结点至少含有一个后继,分支结点也称为非终端结点。叶子结点:树中的度值为0的结点。双亲结点:树中某个结点的前驱结点,也成为父节点。子女结点:树中某结点的后继结点。兄弟结点:树中同一层的结点。

2014-08-05 16:14:39 7383

原创 队列(二)——队列的链表实现方式

1.队列的单向链表的实现方法return只可以返回一个值,单向循环链表来实现队列的时候可以只保留一个指针,因为保留rear指针能够很方便的表示出front指针,所以保留rear指针。另外由于链表的第一个结点处理比较特殊,所以在初始化的时候需要单独处理。链表实现的队列思想也是第一个单元作为头结点,不存放数据,rear指针指向的总是尾结点(在循环链表中也就是头结点的上一个结点)。2.实现方

2014-08-04 17:48:22 2001

原创 队列(一)——队列的数组实现方式

1.队列的概念队列是一种特殊的线性表,只允许在队列的一端进行插入而在另一端进行删除。队列一般拥有队首(front指针)和队尾(rear指针),当一个队列并未存入数据的时候,front和rear指针均指向队首。入队的操作:rear后移,存入数据在rear指向的单元,队满不可入队,这同时也表明front总是指向队首元素的前驱。出队的操作:front后移,元素出队,队空不可出队。注意

2014-08-04 16:41:50 5827

原创 递归

1.递归的定义递归是函数的自我调用,用于解决规模减小,但性质不变的问题。2.递归的两大重要点(1)结束点:递归是函数的自我调用,那么在什么时候才算自我调用的结束?(2)递归过程:如何拆解问题的规模,使问题的规模一步步的减小?3.递归的实战(1)输出一个十进制正整数(小于65536)的二进制代码。#include void decimal_2_binary(int

2014-08-04 11:14:50 794

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除