自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

coding__madman的博客

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

  • 博客(15)
  • 资源 (1)
  • 收藏
  • 关注

原创 通用树的存储结构

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

2016-03-13 20:57:37 2219

原创 树的定义

树的定义:1. 树是一种非线性的数据结构2. 树是由n(n >= 0)个节点组成的有限集合如果 n = 0, 称为空树如果n > 0,则:1. 有一个特定的称之为根(root)的节点,它只有直接后继,但没有直接前驱2. 除根以外的其它结点划分为 m (m ≥ 0) 个 互不相交的有限集合T0, T1, …, Tm-1,每个集合又是一棵树,并且称之为根的子树(subTre

2016-03-13 16:04:46 874

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

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

2016-03-10 00:44:09 8135

原创 归并排序

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

2016-03-06 17:05:20 550

原创 希尔排序

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

2016-03-06 14:52:42 513

原创 快速排序

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

2016-03-03 11:42:14 669

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

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

2016-03-02 15:51:08 977

原创 多线程编程---信号量

信号量也就是操作系统中所用到的 PV 原子操作,它广泛用于进程或线程间的同步与互斥。信号量本质上是一个非负的整数计数器,它被用来控制对公共资源的访问。PV原子操作的工作原理:PV原子操作是对整数计数器信号量sem的操作。一次P操作使sem减一,而一次V操作使sem加一。进程(或线程)根据信号量的值来判断是否对公共资源具有访问权限。当信号量sem的值大于等于零时,该进程(或线程)具有

2016-03-30 12:48:28 1064

原创 Linux多线程编程---条件变量

条件变量为什么需要条件变量:在多线程编程中仅使用互斥锁来完成互斥是不够用的,如以下情形:假设有两个线程 t1 和 t2,需要这个两个线程循环对一个共享变量 sum 进行自增操作,那么 t1 和 t2 只需要使用互斥量即可保证操作正确完成,线程执行代码如所示:pthread_mutex_t sumlock= PTHREAD_MUTEX_INITIALIZER; void * t1t2

2016-03-30 08:58:04 602

原创 Linux多线程编程---2

1. 线程概念:线程是包含在进程内部的顺序执行流,是进程中实际运作单位,也是操作系统能够进行调度的最小单位,一个进程中可以并发多条线程,每条线程并行执行不同的任务。2. 线程与进程的关系    1> 一个线程只能属于一个进程,但是一个进程可以有多个线程,但至少有一个主线程。    2> 同一进程的所有线程共享该进程的所有资源。    3> 线程作为调度和分配的基本单位,进程作为拥有

2016-03-29 17:38:02 999

转载 从Linux程序中执行shell(程序、脚本)并获得输出结果

1. 前言Unix界有一句名言:“一行shell脚本胜过万行C程序”,虽然这句话有些夸张,但不可否认的是,借助脚本确实能够极大的简化一些编程工作。比如实现一个ping程序来测试网络的连通性,实现ping函数需要写上200~300行代码,为什么不能直接调用系统的ping命令呢?通常在程序中通过 system函数来调用shell命令。但是,system函数仅返回命令是否执行成功,而我们可能

2016-03-24 17:01:15 1694

原创 Linux生成以当前时间年/月/日命名的文件夹并向相应目录文件中写数据例程

功能需求:在linux下一切皆文件,由于需要向SD卡里面写数据,并且在相应的目录下要一天一个TXT文档。比如当前时间 2016年3月7日,则要生成一个以年为目录名的文件夹2016,然后在2016这个目录下在生成一个以月为目录名的文件夹03,然后在03这个目录下以当前日期命名的每天一个TXT文档。及每当年月日发生变化时,都会有新的文件夹和TXT文件同步生成。当时网上查了一下,这方面的资料不是很多,基

2016-03-07 18:11:10 5817

原创 Linux多线程编程API基础---1

背景:工作需要用到Linux多线程编程,在学习和实践中学到了不少关于linux多线程编程技术,在此整理成笔记,以便以后温故而知新!

2016-03-02 17:50:00 607

原创 高富帅

高于眼界 富于思想 帅在处世

2016-03-01 21:51:29 461

原创 冒泡排序及算法优化

冒泡排序

2016-03-01 18:31:59 714

can总线资料

can总线相关文档以及可以提供参考的can开源源码

2016-06-22

空空如也

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

TA关注的人

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