Beyonderwei

Learn to choose, to give up. Endure loneliness and withstand temptation!

数据结构——交换排序(冒泡、快排)

一、冒泡排序排序思想    从头到尾,两两比较相邻的两个元素,如果顺序不对,则交换顺序,这样每一次即可将参与比较中最小的找出来。 图解    从下向上,如果array[i] < array[i-1]则进行交换,如最左侧的一列,35交换-37交换-32不换-21不换-14交换-16交换。这样就得到了第二列,循......

数据结构——插入排序

一、排序思想将数据元素,一个一个的插入到当前已经排序好的表中。 二、图解 三、代码实现12345678910111213141516171819202122232425262728void insertSort(int array[], int length){ int i, j, tmp; for(i = 1; i < length; i++) {......

数据结构——选择排序

一、排序思想每一次取出没有被排序的元素中最小的元素。 二、图解 先从已有的七个中找到最小的(下标为2),记住下标,与下标为0的交换。 从剩下的六个中再找到这六个中最小的(下标为3),记住下标,与下标为1的交换。 直到循环六次(N-1次),全部排好。三、代码实现1234567891011121314151617181920212223242526272829303132333435363738......

数据结构——查找(平衡二叉树、分块索引、哈希表)

一、平衡二叉树1. 解决的问题     对于顺序存储的有序表在查找时可以采用二分法、插值法等查找方式,使查找的时间复杂度由 $O[n]$ 提高到了$O[log_n]$ ,但是面临的问题是,顺序存储的有序表在插入和删除元素时的效率很低,为 $O[n]$,因此如何使查找、插入和删除的的效率都很高呢? 2. 概念   ......

数据结构——最小生成树

一、相关概念 连通图:图中的任意两个节点之间都是联通的,即:总能从A节点按照一定路径走到B节点。 生成树:为联通图的一个联通子图,包含N个结点和N-1条边。 最小生成树:当联通图中的每条边带有权值时,所有边权值和最小的生成树。二、问题导向    各个城市之间修建铁路,城市之间铺设电缆、水管等,不考虑环境等复杂因素,肯定最小生成树对应的权值(对应管线、铁......

数据结构——赫夫曼树

一、实际问题场景  比如要为学生的成绩按照分数线分为优、良、中、及格、和不及格,对应的分数线如下: 等级 优 良 中 及格 不及格 分数区间 90-100 80-89 70-79 60-69 0-59 分数在该区间的概率 10% 30% 40% 10% 10%   现在有大量的学生的成绩需要对比,如果按照下面两种顺序......

数据结构——KMP模式匹配算法

代码内容简介: 常规的匹配方式12345678910111213141516171819202122232425262728293031/** * Function 常规匹配查找子串 * @param: * str_o: 原始串 original string * str_t: 要查找的目标字符串 target string * @return 成功:指向目标字符串所在原始串......

数据结构——栈、队列

一、栈简介 概念:一种特殊的线性表——先进后出(Last In First Out )的线性表。 特点:先进后出,只能从栈顶弹出(pop)或压入(push)数据。 存储结构:顺序存储和链式存储(常用)。结构代码注:链式存储123456789101112131415// 定义链表元素所存储的数据类型(以int为例)typedef int ElemType;// 定义栈的结点结构及结点指针类型t......

数据结构——链表

一、概念 线性表:多个数据元素组成的有限序列。 链表:线性表的链式存储结构二、分类1.单链表 概念: 链表的结点包含数据域和指针域,指针域只有一个,并指向下一个结点。 特点:插入删除数据的时间复杂度仅为O(1),不需要预分配存储空间。2. 循环链表 概念:单链表中,终端结点的指针由空指针改为指向头结点的指针,形成一个环。 特点:相对于单链表,循环链表可以在任意位置开始访问到整个链表,尾指针的......

Kalman滤波算法

卡尔曼滤波一、滤波效果展示  蓝色的波形是实际测得的数据,红色的波形是经 Kalman 滤波后的数据波形。注:这里是实际应用激光测距传感器(TOF)vl53l0x 测得的距离数据。 二、简介  采用递归的方法解决线性滤波问题,只需要当前的测量值和前一个采样周期的估计值就能进行状态估计,需要的存储空间小,每一步的计算量小。 三、组成1. 预测状态......

四旋翼PID控制原理

一、PID 原理   偏差控制,利用目标值(期望值)与实际测量值构成的偏差(误差)对被控对象进行线性的控制。偏差 = 目标值 - 测量值。 二、四旋翼串级双闭环 PID 控制  对于四旋翼,可以理解外环为角度环,内环是角速度环。 1. 外环 目标值:期望轨迹,即期望的姿态角度。 测量值:实际的姿态角度。 PID控制器的输入:目标值 - 测量值......

CC3200实现浇水控制(实现一个简单的物联网系统-5)

一、序言  前面已经可以实现从服务器获得用户想要的浇水量,下面就需要对IO口进行拉高拉低对水泵的启停进行控制。 二、CC3200 GPIO 简介  CC3200所有逻辑引脚和部分模拟引脚均可以用来作为通用输入/输出(GPIO)使用。GPIO功能可用于各种逻辑输入输出的场合。 GPIO有4组(GPIO A0~A3),每组8个。 具体如下:Q......

CC3200上传数据到服务器(实现一个简单的物联网系统-4)

一、序言  上篇文章已经完成了从服务器 get 数据,这篇将通过 post 的方式,将通过CC3200测得的花卉状态信息(如土壤湿度、光照强度)上传到服务器。其实post的方式也实现了接收服务器返回的数据,所以只发送一个post请求就可以完成数据的上传和获取,具体在下面说明。 二、CC3200 连接到路由器(AP)  这里已经在上篇文章说过了,......

CC3200从服务器获取数据(实现一个简单的物联网系统-3)

一、序言  借助 TI 公司的 CC3200 我们可以通过 http 轻松的完成与服务器之间的数据交互,体验CC3200的开箱即用的感觉,下面借助 http_client_demo 这个历程来实现从服务器 get 数据。实现我们从服务器得到用户的浇水信息。  CC3200的SDK 里面提供了所有的关于CC3200的资料,真的非常重要。 如:AP......

一个简单的后端服务(实现一个简单的物联网系统-2)

一、简介  可以说站在Spring Boot的肩膀上,相对于我之前用最古老的servlet,完成一个简单的后台服务实在变得太容易太容易。但是对于一个完全不了解的人可以参考目录中的学习方法。对于实现远程浇花的功能,只需要处理APP 和 CC3200 发送过来的 get 、post 请求即可。 二、说明  ①.Spring Boot 只是一个框架,......

APP与服务器数据交互(实现一个简单的物联网系统-1)

一、APP POST 数据到服务器  首先 post 的数据应该包括识别这个花卉的信息和我们想要浇水的量,这里我们识别花卉采用花卉的名字,这样后台程序通过花卉名来对应更新数据库中该花的浇水量。 mFlower_name:花卉名 mBulk : 浇水量 实现代码如下:注意: String urlPath 中的 IP 地址是我局域网的地址,如果你的后台程序是在......

HC-05蓝牙配置

一、序言  有时买回来的蓝牙模块的默认配置不能满足我们的使用需求时,就需要对买回来的蓝牙进行自行配置,比如更改波特率来适应自己的程序,或是更改主、从机的设置等等。即使是用默认的设置也需要对密码进行修改,以免设备和其他人也没有进行配置的蓝牙进行配对连接。下面介绍最长用的HC-05 蓝牙模块的简单配置方法。 二、准备材料 官方的上位机  下载地址:......

搭建完整物联网系统(CC3200+云服务器)

一、序言  本系列文章主要讲解如何通过 CC3200(简单理解为单片机和WIFI模块的结合体)、云服务器、APP 来实现远程控制。所有的程序全部自己编写,我们可以真正意义上的实现:①. 远程控制家中的热水器烧水②. 远程控制监测环境数据… … 等等。(可以尽情的发挥想象,想象好了就可以开始了!)比如:我想实现远程浇花这个功能(因为室友养的花寒暑假没有人照看,实现这样一......