数据结构与算法
我的学习笔记
无常亦常
生有涯而学无涯
展开
-
一阶滤波算法学习笔记
其特点对于周期干扰有良好的抑制作用(优)带来了相位滞后,导致灵敏度低(缺)不能滤除频率高于采样频率的二分之一(称为奈奎斯特频率)的干扰(例如采样频率为100Hz,则它不能滤除50Hz以上的干扰信号)(缺)滤波系数越小,滤波结果越平稳,灵敏度越低滤波系数越大,灵敏度越高,但滤波结果越不稳定公式推导如下采用matalab进行算法仿真:clc;clear;close all;q=0.5;tt=0:0.001:15;y_ideal=sin(0.5*tt);y_noise=awgn(y_原创 2020-12-12 14:19:42 · 2852 阅读 · 0 评论 -
直线加减速笔记
DecelerateFlag =0; FirstIntoDeceZeroFlag =0; DeceZeroAcc =0.0; CurPos=0; ObjPos=30000;%目标距离 count=0; remains=0; LinAcc=50;%设定的加减速 CNC_CurrentSpeed=300;%当前速度 x=zeros(1,19);%定义一个一维向量 y=zeros(1,19); while(CurPos<ObjPos) remains=ObjPos.原创 2020-11-26 22:16:08 · 363 阅读 · 0 评论 -
数据结构与算法笔记 --- 排序
1、插入排序算法:思想:从数组下标1的数据开始往前面比较。一次到下标为N为止#include <stdio.h>void Insert(int a[], int num);void Insert(int a[], int num){ int i = 0, j = 0,temp=0; for (i = 1; i < num;i++){ j = i; temp = a[i];//得到要插入的数据 for (; j>0, a[j - 1] > tem原创 2020-08-09 18:12:59 · 132 阅读 · 0 评论 -
数据结构与算法学习笔记---左式堆
左式堆:左式堆是一种支持合并的堆,合并是集合的基本操作,在第一节有谈到集合这种数据结构,其特点是数据结构之间没有任何关系,和数学中的集合是类似的。所有支持高效合并的数据结构都需要使用指针,但是可能会导致其它操作变慢。零路径长是指结点到一个没有两个儿子的叶子结点的最短路径长,空结点的最短路径长为-1,零路径长实际是结点的最短高度,也就是到最近树叶的距离。左式堆性质:(1)堆序性,一般左式堆都是使用最小堆(也可以实现最大堆),对于最小堆,任意结点关键字大于或等于其父结点的关键字,也就是key(i) &原创 2020-07-23 17:45:17 · 324 阅读 · 0 评论 -
数据结构与算法分析---二叉堆
堆,又称为优先队列。虽然名为优先队列,但堆并不是队列。堆和队列是两种不同的数据结构,堆是树态的,队列是线性的。在队列中,我们可以向队列添加元素,取出的时候是按照进入队列的先后顺序取出元素的,先进先出;而在堆中,却不是按照元素添加的先后顺序,而是按照元素的优先级取出元素二叉堆的特性:1.父节点的键值总是优先于任何一个子节点的键值;2.左右子树都是一个二叉堆二叉堆的操作:1)上浮:就是在末尾哪里插入数据之后,根据这个数据的优先级向上自动,比如插入212)下浮:就是取出最大优先级之后,要一层一层往下原创 2020-07-17 17:36:02 · 185 阅读 · 0 评论 -
数据结构与算法分析学习----散列
散列表的实现常常叫做散列(hashing),它是一种以常数平均插入,删除,查找的技术。但是这些元素间的任何排序信息的操作将不会得到有效的支持。就是每个元素都有一个KEY值,通过这个KEY值找到该元素,由于这个key值有可能是有冲突的,所以是散列最主要的是如何解决冲突问题1、分离链接法:如图:咋们可以对数据取然后将其存储到对应的表中即可。Hash(X) = X mod 10;这种方法的思路和了链表差不多。2、开放定址法分离链接散列算法的缺点是需要指针,由于给新的单元分配地址需要时间,导致算法速度多原创 2020-07-16 17:01:41 · 280 阅读 · 0 评论 -
平衡二叉树的删除和插入的实现笔记
插入思路如图:插入就四种情况1、右旋2、先左旋再右旋3、左旋4、先右旋再左旋删除的思路:由于删除要考虑树的平衡状态,所以得用递归进行删除比如删除30的数据,1、查找30的节点,2、找到之后,判断左树与右树的高度谁高,如果是左树高的话那就去左树寻找最右边的节点,反之就去找右树最左边的节点3、找到该节点之后,比如他的数据是40,那就把40覆盖掉30,覆盖之后,继续删除,但是现在不是删除30了,删除的是40,继续递归往下找,找到40这个节点就可以收敛了,清除其内存就行#include &原创 2020-05-29 23:26:14 · 405 阅读 · 1 评论 -
普通树的实现
学习数据结构树的笔记#include <stdio.h>#include <malloc.h>typedef struct SHU{ int num; struct SHU *left; struct SHU *right;} ss;ss * Inselt(ss *head,int num) //数的插入数据函数{ if(head==0){//空指针,先申请一波内存 head=(ss *)malloc(sizeof(struct SHU)); hea原创 2020-05-27 19:45:36 · 356 阅读 · 0 评论 -
链表、栈、队列的实现
#include<stdio.h>#include<malloc.h>typedef struct KK{ int num; struct KK *xia;} LB;LB *charu(LB *aa, int num)//有序插入链表{ LB *bb = 0; LB temp; if (aa == 0){ //如果传进来是空指针的话,那就进行内存地址申请工作 bb = (LB *)malloc(sizeof(str...原创 2020-05-26 16:40:12 · 226 阅读 · 0 评论