coding__madman的博客

不积跬步无以至千里---厚积薄发!

排序:
默认
按更新时间
按访问量

递归深度实战

递归与回溯 1. 递归在程序设计中也常用于需要回溯算法的场合 2. 回溯算法的基本思想:(穷举搜索算法) 1> 从问题的某一种状态出发,搜索可以到达的所有状态 2> 当某个状态到达后,可向前回退,并继续搜索其它可达状态 3> 当所有...

2016-04-06 22:41:13

阅读数:2921

评论数:0

通用树的存储结构

树的存储结构难点:无法直接用数组表示树的逻辑结构 但是却可以设计结构体数组对结点间的关系进行表述 如下图:(用一个表格描述图中的树) 那么问题来了: 1. 树结构需要添加和删除结点,数组存储是否足够灵活? 答:树经常需要动态的插入和删除结点,数组存储肯定不够灵活。 2. 每个结点的子节点可以有...

2016-03-13 20:57:37

阅读数:1559

评论数:0

树的定义

树的定义: 1. 树是一种非线性的数据结构 2. 树是由n(n >= 0)个节点组成的有限集合 如果 n = 0, 称为空树 如果n > 0,则: 1. 有一个特定的称之为根(root)的节点,它只有直接后继,但没有直接前驱 2. 除根以外的其它结点划分为 m (m ≥ 0...

2016-03-13 16:04:46

阅读数:679

评论数:0

二分查找算法递归和非递归实现

自己接触和了解过的查找算法总结起来分为3个吧: 1. 静态查找(主要是二分查找,效率较高) 2. 动态查找(二叉查找树) 3. 哈希表 首先来说二分查找吧! 基本思想: 时间复杂度: 空间复杂度: 代码示例: #include //二分查找非递归实现 int BinSearch1(int A...

2016-03-10 00:44:09

阅读数:6138

评论数:0

归并排序

基本思想:归并排序采用的是经典的分治法思想,基本步骤可以分为两步,一归二并。先说简单的并,就是将两个有序的数列合并成一个有序的序列(这个代码实现和容易),难点在于怎么让二组数据组内数据有序,算法采用递归的思想,将两个小组分成四个小组,继续分直到每个小组内只有一个数据时可以认为每个小组组内数组已经是...

2016-03-06 17:05:20

阅读数:439

评论数:0

希尔排序

基本思想: 时间复杂度:n*log(n) 空间复杂度:O(1) 是否是稳定排序:不是稳定排序 代码示例:

2016-03-06 14:52:42

阅读数:393

评论数:0

快速排序

算法思想:快排是采用的分治思想。一般取第一个元素为基准,通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比基准要小,另一部分数据都比基准要大,然后用同样的方法对着两部分数据分别进行快排,快排使用递归思想,直至整个数列变为有序数列。 时间复杂度:n*logn(平均时间复杂度) ...

2016-03-03 11:42:14

阅读数:555

评论数:0

选择排序和插入排序及其优化

选择排序(固定位置,找元素) 基本思想:对于长度为N的无序数列,第一次遍历,将第0个元素和后边所有元素相比较,找出最小的元素,然后和第0个元素交换,第二遍历,将第1个元素和后边所有的元素比较,找出剩下元素中最小的元素,然后和第1个元素交换,重复以上步骤直至最后一次遍历只剩下两个元素的时候,排序完...

2016-03-02 15:51:08

阅读数:762

评论数:0

C语言读取配置文件以及128字节对齐.bin配置文件

配置文件: #begin build properties factory=四川九州电子科技股份有限公司 oui=03 product_type=71 stbid=0371419916190000129 hw_version=00000473 sw_version=2016-10-11 17:2...

2016-10-23 21:50:35

阅读数:873

评论数:0

RK平台Android4.4 添加一个新的遥控器支持以及添加特殊按键

瑞芯微平台 SDK:Android4.4 好久没写博客了,最近工作中需要在SDK中添加一个新的遥控器支持,由于自己对java代码比较头大,过程也是一波三折,整个流程其实分析下来并不难,这里做个简单的总结。也算是学习android的一个开端。 1.  遥控器红外键值到linux层的映射   ...

2016-10-23 20:26:26

阅读数:4673

评论数:3

fread函数小笔记

fread函数:从一个文件流中读数据,最多读取count个元素,每个元素size字节,如果调用成功返回实际读取到的元素个数,如果不成功或读到文件末尾返回 0。 函数原型: size_t fread ( void *buffer, size_t size, size_t count, FILE *...

2016-08-26 10:03:26

阅读数:421

评论数:0

一道错过的很基础的笔试题

目前只记得个大概了:一个16位的操作系统 unsigned char a = -4 & 3; a = ? 当初自己写的答案是3,但是真相却不是这样?第一个自己考虑到了隐性强制类型转换,第二个计算机是通过补码的形式来表示数据的,不过当时还是算错了! 原码就是二进制定点表...

2016-07-31 22:46:33

阅读数:510

评论数:0

串口传文件(非终端串口,自己定协议下位机部分C语言实现)

之前项目中有个地方要实现一个功能,就是通过非终端串口传输文件,这里将其作为一个小功能模块,简单的介绍一下自己是如何实现的!SecureCRT超级终端上可以通过lrz等工具通过命令传输文件这个就不介绍,之前的博客也有写过怎么编译移植使用这个工具,这次是自己来编码实现通过非终端调试串口来安全可靠的传输...

2016-07-31 22:26:48

阅读数:2390

评论数:0

SHA1校验算法C语言实现

SHA1 安全哈希算法:对于长度小于2^64位的消息(1M = 1024k,1K = 1024字节,1BYTE = 8bit 可以想象一下2的63次方位可以表示一个多大的数据文件),SHA1会产生一个160位的消息摘要。当接收到消息的时候,这个消息摘要可以用来验证数据的完整性。在传输的过程中,数据...

2016-07-31 21:25:58

阅读数:5116

评论数:2

Linux C 库函数判断一个文件是否为空

C语言fgetc()函数的返回值意义 函数原型:int fgetc( FILE* stream ); 这个函数的返回值,是返回读取的一个字节。如果读到文件末尾返回EOF。 EOF其实就是一个宏:#define EOF (-1)   表示-1. 既然返回的是一个字节,为什么返回值确用4字...

2016-07-21 18:48:30

阅读数:3184

评论数:0

Linux的fasync驱动异步通知详解

首先还是先从init函数来总结:该驱动是一混杂设备驱动模型来写的,这个主要是借鉴网上的好多资料都是一这种模式来写的,Linux里面misc混杂设备驱动的主设备号是为10的驱动设备,init模块首先是用 misc_register()函数注册一个一个混杂设备驱动,参数一个混杂设备驱动里面非常重要的一...

2016-07-07 17:43:14

阅读数:3076

评论数:0

面试编程题---其中隐藏着若干0,其余非0整数,使A把0移至后面,非0整数移至数组前面并保持有序

题目:int A[nSize],其中隐藏着若干0,其余非0整数,写一个函数int Func(int* A, int nSize),使A把0移至后面,非0整数移至数组前面并保持有序,返回值为原数据中第一个元素为0的下标。(尽可能不使用辅助空间且考虑效率及异常问题,注释规范且给出设计思路)  这是...

2016-07-06 14:47:40

阅读数:1144

评论数:0

已知平面三点坐标求其中两条边之间的夹脚

回首这篇两年前写的博客,算是自己觉得比较有意思的一篇了,那时候刚拿毕业证也就一年左右吧,在一家小公司写代码,然后一同事也是前辈向我讨教这个问题,问我有没有招编程解决这个问题。抱着试试看的态度立马就研究了起来,从理论到实践,也是第二次感觉到数学和代码的结合真的很奇妙(第一感觉神奇的是在学校实验室捣鼓...

2016-06-15 19:20:31

阅读数:1204

评论数:0

epoll机制读取linux串口数据

epoll和select相比,最大不同在于: 1epoll返回时已经明确的知道哪个sokcet fd发生了事件,不用再一个个比对。这样就提高了效率。 2select的FD_SETSIZE是有限止的,而epoll是没有限止的只与系统资源有关。

2016-06-14 10:04:43

阅读数:3541

评论数:0

Linux USB驱动程序设计

USB请求块(USB request block-URB)是USB设备驱动中用来与USB设备通信所用的基本载体和核心数据结 构,非常类似于网络设备驱动中的sk_buff结构体,是USB主机与设备通信的“电波”。 1. USB 设备驱动程序创建并初始化一个访问特定...

2016-06-11 11:31:18

阅读数:4862

评论数:0

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