自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

fzzjoy的专栏

Stay Foolish

  • 博客(35)
  • 资源 (7)
  • 问答 (1)
  • 收藏
  • 关注

原创 排序算法 - 堆排序

关于堆排序的一些基本定义可参见我转载的另一篇博文。http://blog.csdn.net/u010275850/article/details/45311661其实在学习堆的时候细心的同学就可以发现,只要依次保存删除操作的数据,就可以得到一个有序的序列。堆排序也是利用了这样的思想。算法实现:/*根据最大堆实现的堆排序*/#include#define LeftChild(i)

2015-04-29 10:48:40 573

转载 堆排序

转载出处: http://www.cnblogs.com/dolphin0520/archive/2011/10/06/2199741.html堆排序是利用堆的性质进行的一种选择排序。下面先讨论一下堆。1.堆  堆实际上是一棵完全二叉树,其任何一非叶节点满足性质:  Key[i]=Key[2i+1]&&key>=key[2i+2]  即任何一非叶节点的关键字

2015-04-27 15:59:34 464

原创 排序算法 - 希尔排序

希尔排序可谓是插入排序的升级版,它通过比较相距一定间隔的元素来工作;各趟比较所用的距离随着算法的进行而减小,直到只比较相邻元素的最后一趟排序为止。由于这个原因,希尔排序也被称为缩小增量排序希尔排序使用一个序列h1,h2,h3,....,hk,叫做增量序列。只要h1=1,任何增量序列都是可行的。在使用增量hk的一趟排序之后,对于每一个i我们有A[i]例如:0 12 3 4 5 6

2015-04-27 15:28:59 562

原创 排序算法 - 插入排序

参考书籍《数据结构与算法分析——C语言描述》插入排序,简而言之,就是对于第i个数,前i-1个数是已排序的,第i个数则要从第i-1个数开始往前遍历,比较大小,比它大的往后移一位,比它小的则其后为要的插入的位置,则在此处插入即可。插入后会发现前i个数都变成已排序的了(此处应注意体会)。于是依此类推插入第i+1个数。此方法最坏的时间复杂度也会达到O(n^2)的。例如初始序列:34 8 6

2015-04-27 14:50:56 636

原创 Wooden Sticks

Wooden SticksTime Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 2471 Accepted Submission(s): 955 Problem Description

2015-04-23 20:10:32 530

转载 Linux写时拷贝技术(copy-on-write)

原文地址:http://www.cnblogs.com/biyeymyhjob/archive/2012/07/20/2601655.htmlCOW技术初窥:      在Linux程序中,fork()会产生一个和父进程完全相同的子进程,但子进程在此后多会exec系统调用,出于效率考虑,linux中引入了“写时复制“技术,也就是只有进程空间的各段的内容要发生变化时,才会将父进程的内

2015-04-17 16:03:25 563

转载 C语言的按位 或,与,非,异或 运算符

注意与常用逻辑运算符的区别位运算符常用逻辑运算符按位与:&  与:&& 按位或:| 或:||按位异或:^ 非:!非运算:~按位与&:其功能是参与运算的两数各对应的二进位相与。只有对应的两个二进位均为1时,结果位才为1 ,否则为0。参与运算的数以补码方式出现。 例如:9&5可写算式如下: 00001001 (9的二进制补码)&00000101 (5的二

2015-04-17 15:01:54 15522

原创 指针变量的类型及含义——小结

参考书籍《C程序设计(第四版)》谭浩强把变量名抹去就是他们的类型了当指针遇上二维数组时,就常常老鼠,老虎,傻傻分不清楚了。小zz根据教材总结了以下几点:例如:int a[3][4]={.......}1. a[i] :指向i行0列元素地址; a[i]+j:指向i行j列元素地址;2. &a[i]:指向i行首地址; &a[i]+j:指向i+j...

2015-04-17 14:40:56 2965

原创 数据结构学习——二叉堆ADT(程序化)

参考书籍《数据结构与算法分析——C语言描述》关于堆的一些基本概念,可参见小zz的另一篇博文。/*本例程实现的是最小堆,最大堆类似*/#include#include#include#include#define MAX 13typedef struct BHeap{ int Capacity;//堆的最大容量 int Size;//当前堆大小 in

2015-04-15 21:30:00 1382

原创 c中的const使用大全

参考:百度百科Case1 :const int n=5;int a[n];不能这样使用,即使编译通过,对数组a大小的声明也是无效的。因为const修饰的是只读变量,而ANSI C规定数组定义时长度必须是“常量”,在ANSI C中用什么来定义常量呢?答案是enum类型和#define宏,这两个都可以用来定义常量。Case 2:例:下面的代码编译器会报一个错误,请问

2015-04-15 11:02:04 836

原创 C++_const使用大全

在同一个类中是不能定义两个名字相同、参数个数和类型都相同的函数,但是在类的继承层次结构中,在不同的的层次中可以出现名字相同、参数个数和类型都相同而功能不同的函数,此时就会发生函数覆盖现象,默认调用的是本类中的成员函数,若派生类对象想调用基类的继承的覆盖函数,则需如此调用:派生类对象.基类::成员函数。如:#includeusing namespace std;class A{pub

2015-04-15 10:12:57 629

原创 关于++i与i++的总结

大牛的总结(详见《C专家编程》一书附录A):++X和X++的区别与编译器的中间代码有关,例如:“++X”表示取X的地址,增加它的内容,然后把值放在寄存器中;(先加)“X++”表示取X的地址,把它的值装入寄存器中,然后增加内存中X的值;(后加)测试代码如下:#include<stdio.h>int main( ){ int a=1,b=3; ...

2015-04-14 13:58:37 990 1

原创 数据结构学习——优先队列(堆)的基本概念

参考书籍《数据结构与算法分析——C语言描述》普通的队列是一种先进先出的数据结构,元素在队列尾追加,而从队列头删除。在优先队列中,元素被赋予优先级。当访问元素时,具有最高优先级的元素最先被访问。(引用百度百科)而堆则正是这种优先队列的具体实现。堆(二叉堆):是一棵完全被填满的二叉树,有可能的例外是在底层,底层上的元素从左到右填入,这样的树被称为完全二叉树。最大堆和最小堆是二叉堆的两种形式。...

2015-04-13 20:22:57 988

原创 关于shell变量的测试与内容替换

参考资料《鸟哥的私房菜——Linux基础学习篇(第三版)》。在《鸟哥的私房菜——Linux基础学习篇(第三版)》第11章中,鸟哥关于变量的测试与内容替换中,鸟哥最后用范例说明了变量替换中'-'、'='、'?'三种特殊符号的用法。看完这些例程,给我最大的感受就是var=${str-newvar}或者var=${str=newvar}或者var=${str?newvar}的变量替换就与C语言中

2015-04-13 20:09:15 1082

原创 数据结构学习——树的基本概念

参考书籍《数据结构与算法分析——C语言描述》连接俩个节点的称为边一棵树是N个节点和N-1条边的集合没有儿子的节点称为树叶(叶)。具有相同父亲的称为兄弟。某路径的长为该路径上边的条数。对任意节点ni,ni的深度为从根到ni的唯一路经长,其中根的深度为0。一棵树的深度等于它最深的树叶深度。(深度是向上而言)ni的高是从ni向下到一片树叶的最长路径的长,一棵树的高等于...

2015-04-12 21:18:11 667

原创 数据结构学习——散列表ADT(程序化)

不知道大家在刚开始看《数据结构与算法分析——C语言描述》散列一章的时候,能不能理解书上的内容,小ZZ看的时候就没怎么看明白。于是就去问度娘,度娘给了我这样一篇文章。里面介绍了散列的基本定义以及常用的实现方法,比较通俗易懂(可能是智商有点拙计)。http://blog.csdn.net/u010275850/article/details/44963701先看完了这篇博文,然后再看书上的

2015-04-12 11:32:27 976

原创 hihocoder#1049 : 后序遍历

时间限制:10000ms单点时限:1000ms内存限制:256MB描述在参与过了美食节之后,小Hi和小Ho在别的地方又玩耍了一阵子,在这个过程中,小Ho得到了一个非常有意思的玩具——一棵由小球和木棍连接起来的二叉树!小Ho对这棵二叉树爱不释手,于是给它的每一个节点都标记了一个标号——一个属于A..Z的大写字母,并且没有任意两个节点的标号是一样的。小Hi也

2015-04-11 16:34:56 716

原创 数据结构学习——线性表

线性表一般分为顺序结构和链式结构。顺序表里面元素的地址是连续的,如数组;链表里面节点的地址不是连续的,是通过指针连起来的,如单链表;顺序表和链表结构各自的优缺点:(引自百度知道)①顺序结构:   优点:易于查询,索引快 list[n]这样的操作,O(1)复杂度   缺点:扩展性弱,不易删除、添加。②链表结构:   优点:扩展性强,易于删除、添加   缺

2015-04-10 16:41:04 707

转载 2015阿里系统工程师面试经验分享

这篇文章的源处是:http://user.qzone.qq.com/794884160/blog/1411125641。这个是在签意向书认识的同事,他把面试经验写在QQ空间,经过他的同意后,我把这篇文章转载到这里,供大家分享。以下是正文:前言:首先我想说的是,阿里面试不是碰运气,除了技术,你还要能变通,而只有了扎实的技术作根基你才能轻松变通!!!!   能进入BAT(百

2015-04-09 23:22:02 2316

转载 散列

参考链接:详细图解什么叫平方探查法即二次探测再散列和线性探测再散列(数据结构 哈希函数 哈希冲突)哈希表(散列表)原理详解数据结构:散列(hashing)散列的基本概念散列方法的主要思想是根据结点的关键码值来确定其存储地址:以关键码值K为自变量,通过一定的函数关系h(K)(称为散列函数),计算出对应的函数值来,把这个值解释为结点的存储地址,将结点存入到此存储单元中。检索时,用同样的方法计算地址,然...

2015-04-09 18:32:29 1340

原创 周转时间和带权周转时间的计算

周转时间=作业完成时刻—作业到达时刻;带权周转时间=周转时间/服务时间;平均周转时间=作业周转总时间/作业个数;平均带权周转时间=带权周转总时间/作业个数;例:有4个进程A,B,C,D,设它们依次进入就绪队列,因相差时间很短可视为同时到达。4个进程按轮转法分别运行11,7,2,和4个时间单位,设时间片为1。四个进程的平均周转时间为 ?解析:由于是视为同时到达,则

2015-04-09 11:53:01 95700 7

原创 数据结构学习——栈的链表实现(程序化)

关于栈的基本概念以及和Catalan数的关系,可以参见我的其他文章参考资料《数据结构与算法分析——C语言描述》#include#include/*栈的链表实现*/typedef struct StackNode{ struct StackNode *next; int data;}StackNode,*Stack;Stack CreateStack(

2015-04-08 21:37:06 662

原创 内存字节对齐原则——总结

似乎每一家企业在招聘的时候都很关注这个问题,无论在笔试还是面试都会提及。ZZ最近找工作就经常遇到这样的问题,尽管之前有去了解过,但自己没有总结过,还是回答错了这才想起来总结了,为时不晚吧。字节对齐的原则主要有俩条:在没有#pragma pack的情况下1、sizeof的最终结果必然是结构内部最大成员的整数倍,不够补齐。结构内部最大成员包含子成员结构体内部的成员,可以这么理解:t...

2015-04-08 20:37:43 3027 2

转载 内存字节对齐原则

请牢记以下3条原则:(在没有#pragma pack宏的情况下,务必看完最后一行) 1:数据成员对齐规则:结构(struct)(或联合(union))的数据成员,第一个数据成员放在offset为0的地方,以后每个数据成员存储的起始位置要从该成员大小或者成员的子成员大小(只要该成员有子成员,比如说是数组,结构体等)的整数倍开始(比如int在32位机为4字节,则要从4的整数倍地址开始存

2015-04-08 19:03:41 425

原创 C++_基类成员在派生类中的访问属性——总结

首先回顾一下三种成员访问限定符:public(公用的):既可以被本类中的成员函数所引用,也可以被类的作用域内的其他函数(即类外)引用。private(私有的):只能被本类中的成员函数引用,类外不能调用(友元类除外)protected(受保护的):不能被类外访问,但可以在派生类的成员函数访问。接下来就用一张表总结一下基类成员在派生类中的访问属性:可以这么简单的认为:...

2015-04-08 16:08:42 5385

原创 并行和并发的区别 进程和线程的区别

并行:同一时刻,有多条指令在多个处理器上同时执行。并发:同一时刻,只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果。进程一般具有以下4大要素:1、有一段程序供其执行(该程序可以多个进程共用)。2、有专用的系统堆栈空间。3、在内核中有对应的进程控制块。4、有独立的存储空间,意味着拥有专有的用户空间。线程相对于进程而言

2015-04-08 15:21:48 3308

原创 数据结构学习——二叉查找树ADT(程序化)

参考资料:《数据结构与算法分析——C语言描述》4.3一节#include#include#define N 10typedef struct BinTreeNode{ int data; struct BinTreeNode *left; struct BinTreeNode *right;}BinTreeNode,*BinTree;BinTree in

2015-04-07 21:07:40 1138

原创 hihocoder#1015 : KMP算法

时间限制:1000ms单点时限:1000ms内存限制:256MB描述小Hi和小Ho是一对好朋友,出生在信息化社会的他们对编程产生了莫大的兴趣,他们约定好互相帮助,在编程的学习道路上一同前进。这一天,他们遇到了一只河蟹,于是河蟹就向小Hi和小Ho提出了那个经典的问题:“小Hi和小Ho,你们能不能够判断一段文字(原串)里面是不是存在那么一些……特殊……的文字

2015-04-07 19:54:47 597

原创 KMP算法 - 快速求解next数组

在KMP算法中,最关键的就是求解next数组了。那么如何快速求解next数组呢?已知模式串:A B C D AB D D A其next数组:0 0 0 0 12 0 0 1那么是如何求证出来的呢?首先字符串从左至右遍历。第一个字符A的next数组对应元素为0,第一个字符A和第2个字符B比,不相等。B:0(表示字符B的next数组对应元素为0);第

2015-04-07 18:51:52 2941

原创 关于子函数返回字符串问题集锦

Case1:#include<stdio.h>#include<string.h>#include<stdlib.h>char* getMem(void){ char p[] = "hello world";//这样子定义可以输出,但输出乱码。 p[5] = 0x0; return p;}int mai...

2015-04-06 20:24:33 1325

原创 关于sizeof与strlen在字符串应用的区别

sizeof是计算数据类型占用内存的大小。当计算字符串占存大小时。strlen的函数原型: std::size_tstrlen(constchar*str); sizeof是个运算符。sizeof(string)=strlen(string)+1;原因很简单,字符串常量会在存储为char数组时补上最末位的‘\0’结束符。举个...

2015-04-06 19:47:50 611

原创 数据结构学习——栈的出栈次序及次序种类

学过数据结构的程序猿应该都清楚,栈是一种先入后出,后入先出(LIFO)的表。即插入和删除都只能在一个位置上进行,即栈顶位置。对栈的基本操作有Push(入栈)和Pop(出栈)。在一般软件研发的笔试中,就会经常遇到关于入栈次序一定时,出栈次序有哪些?共有几种?其实,此处只要了解一下卡特兰数的算法结构,参见:http://baike.baidu.com/link?url=T7ZR16yiaWKN

2015-04-05 15:44:35 9969 2

原创 C++_类模板的使用

类模板是类的抽象,类是类模板的实例。声明类模板:template<class T1,class T2...>//可声明多个类型参数关于类模板的使用谨记一点。用类模板实例化的类中实参数类型去代替声明时的类型参数名。如声明:template <class T1,class T2>class Compare{public: Compare(T1 a,T...

2015-04-04 13:14:20 645

原创 排序算法 - 基数排序(桶式排序)

基数排序(radix sort)属于“分配式排序”(distribution sort),又称“桶子法”(bucket sort)或bin sort,顾名思义,它是透过键值的部份资讯,将要排序的元素分配至某些“桶”中,藉以达到排序的作用,基数排序法是属于稳定性的排序,其时间复杂度为O (nlog(r)m),其中r为所采取的基数,而m为堆数,在某些时候,基数排序法的效率高于其它的稳定性排序法

2015-04-03 19:42:44 1906

转载 大端小端格式详解

1. 什么是大端,什么是小端:所谓的大端模式,是指数据的低位保存在内存的高地址中,而数据的高位,保存在内存的低地址中;所谓的小端模式,是指数据的低位保存在内存的低地址中,而数据的高位保存在内存的高地址中。2.为什么会有大小端:为什么会有大小端模式之分呢?这是因为在计算机系统中,我们是以字节为单位的,每个地址单元都对应着一个字节,一个字节为8bit。但是在C语言中除了

2015-04-01 16:16:41 425

qt-solutions.rar

qt扩展库源码:属性树等

2021-09-01

如何制作DLL接口及使用

具体教程详见:http://blog.csdn.net/u010275850/article/details/53742683

2016-12-19

基于STM32高精度频率计的设计

这是我自己采用STM32的定时器外部计数模式,考虑到了计数溢出中断。开设1s的时钟窗口。数据均通过MATLAB二次拟合处理过,以纠正误差。理论上可以测到1hz-无穷的频率范围(但在本实验中只是测到了1Mhz.对1Mhz以上数据并没进行数据拟合,故认为不在指标内),分辨率为1Hz(因为是开了1s的时间窗口,时间窗口越大,分辨率越高)高精度频率计。避免了输入捕获受输入时钟的大小限制。自己设计的方案。当然数据拟合部分还能分段拟合,精度就更高了。

2014-08-10

18B20串口显示

测试通过,能用。又不懂的可以给我留言,提供技术支持。

2014-05-29

NRF24L01双向通信

基于单片机的NRF24L01通信程序。测试通过,保证能用。

2014-05-29

uCGUI最新固件库

最新的固件库哦,亲测能用哦。是基于KEIL mdk开发使用,一般8、16、32位单片机开发都OK。

2014-04-20

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

TA关注的人

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