
算法
文章平均质量分 77
学益得智能硬件
嵌入式、C/C++课程、项目实战
展开
-
抛开数学问题,如何更好的理解PID控制算法?
PID是Proportional(比例)、Integral(积分)、Differential(微分)三者的缩写。PID调节是连续控制系统中技术最成熟、应用最广泛的调节方式。PID调节实质是根据输入的偏差值,按照比例、积分、微分的函数关系进行运算,运算结果用以控制输出。这是书本上对PID的定义,如果没有数学基础,不懂积分、微分,其实很难理解。PID的应用无人机悬停、空调温控、定速巡航…以定速巡航为例子,比如当前速度是0,现在需要用10秒钟的时间把速度提升到100,一个很烂的定速巡航系统可能出现下面.原创 2021-11-09 21:28:51 · 920 阅读 · 3 评论 -
【排序】--C语言实现快速排序
快速排序首先简单描述一下快速排序的过程。比如有一组数据:第一步以6为基数,我们要筛选出,比6大的数字,放在6的后面,比6小的数字,放在6的前面。所以需要两个指针(下标)。从y开始,由于【2 < 6】,所以需要用2来覆盖6(不用担心6被覆盖,6已经被记下来了)。同时x++。接下来从x开始。由于【4 < 6】,就应该放在左边,所以不要移动元素4。继续x++。由于【7 >...原创 2020-03-19 15:30:45 · 742 阅读 · 0 评论 -
【排序】--C语言实现简单插入排序
简单插入排序先把第一个元素当做一个数组,因为如果数组只有一个元素的话,那么它肯定是个有序的序列。然后把第二个元素插入到前面有序的序列中,以此类推。把元素插入有序的序列,先从有序序列的最后一个元素开始比较,如果条件成立(大于或者小于),则元素向后移动。代码#include <stdio.h>#include <stdlib.h>#include <time.h...原创 2020-03-16 23:00:03 · 1472 阅读 · 0 评论 -
【二叉树】--C语言实现创建二叉搜索树
二叉搜索树创建二叉搜索树的过程很简单,第一个数字作为根,第二个数字,如果比根大,则作为根的右子树,如果比根小,则作为根的左子树。一次类推。对一棵二叉搜索树进行中序遍历,可以的到一个有序的序列。代码#include <stdio.h>#include <stdlib.h>struct Node{ int data; struct Node *le...原创 2020-03-16 15:26:56 · 782 阅读 · 0 评论 -
【排序】--C语言实现基数排序
基数排序基数排序适合整理较大的数据。先根据个位数排序,再根据十位数排序,以此类推,最终得到一组有序的数据。代码复杂的地方是如果收集数据。先定义十个“桶”,将个位按照具体的数字放在对应的“桶”内。收集的过程需要重新申请一块空间,从原始序列的最后一个数字开始,找出它在新序列中的位置,循环完成收集。代码#include <stdio.h>#include <stdlib.h&g...原创 2020-03-07 21:47:54 · 1251 阅读 · 0 评论 -
【排序】--C语言实现归并排序
归并排序归并排序将两个有序的序列合并成一个有序的序列。如何得到两个有序的序列,把数据不停的拆分,拆到每个序列只有一个数据。所以归并排序用到了递归思想。代码#include <stdio.h>#include <stdlib.h>//两个有序的序列合并成一个有序的序列void Merge(int *a, int start, int mid, int end)...原创 2020-03-07 13:24:11 · 1743 阅读 · 0 评论 -
【排序】--C语言实现堆排序
堆排序堆排序使用【大顶堆】或者【小顶堆】实现。分为两步:构建堆和调整堆,主要时间都花在了构建堆上。堆排序效率比较高,适用于数据量比较大的场景。代码#include <stdio.h>/*函数描述:构建大顶堆函数参数:数组 根节点的下标 最后一个结点的下标*/void AdjustMaxHeap(int *a, int root, int last){ int ...原创 2020-03-07 13:14:54 · 592 阅读 · 0 评论 -
【排序】--C语言实现希尔排序
希尔排序希尔排序属于一种插入排序,如果搞懂了直接插入排序,你会发现希尔排序就是多了一层循环。希尔排序比直接插入排序效率高的多,直接插入排序一次只能移动一个位置,但是希尔排序因为多了【增量】的概念,一次可以移动多个位置。把一组无序的数据变得基本有序后最后再使用直接插入排序。代码#include <stdio.h>void InsertSort(int *a, int lengt...原创 2020-03-07 13:04:26 · 1581 阅读 · 0 评论 -
【小米笔试题】密码破译-C语言实现
题目我们来做一个简单的密码破译游戏。破译的规则很简单,将数字转换为字母,1转化为a,2转化为b,依此类推,26转化为z。现在输入的密码是一串数字,输出的破译结果是该数字串通过转换规则所能产生的所有字符串。输入:多行数据,每行为一个数字串。输出:多行数据,没行对应输出通过数字串破译得到的所有字符串,并按照字符串顺序排列,字符串之间用单个空格分隔,每行开头和结尾不允许有多余的空格。样例输...原创 2020-03-07 11:40:19 · 2631 阅读 · 0 评论 -
C语言使用栈实现逆波兰表达式 | 四则运算 | 后缀表达式
calculator.c#include <stdio.h>#include <stdlib.h>#define OK 1000000#define ERROR 1000001struct node{ int data; struct node *next;};typedef struct node Node;struct ...原创 2020-03-07 10:51:54 · 1239 阅读 · 0 评论