数据结构与算法

数学拾遗 微积分 线性代数 考研:2018启航张宇高数远程面授
https://leetcode-cn.com/problems/two-sum/description/
https://blog.csdn.net/zr459927180/article/details/51932655

前言

1.算法学习与克服恐惧
知晓算法形成和实现原理;
面对新问题为什么胆怯焦虑不安:问题描述定义未明?对概念不熟悉?不够自信?
解决办法:1.首先明确这些问题就算大神也不是一步就能做出来的,需要积累;
2.相信自己也有解决这种办法的能力,没有可以积累,不是我不适合,是问题不适合;
3.会用解决方法就是一种方法,这些才是编程最后的难题,一下解决了编程就没意思了;
4.算法需要考虑存储空间和内存等问题:比如分段排序
数据量 有/无序 存在位置是否影响(复杂度分析)

一 工作中常用算法

最短路径

足球控制例子

哈希表

目的:为了根据数据的部分内容(关键字),直接计算出存放完整数据的内存地址
原理:通过某种算法(哈希函数)直接根据关键字计算出元素的存放地址,由于无需遍历,所以效率很高;
①哈希函数实现:

http://blog.chinaunix.net/uid-26548237-id-3483650.html

http://www.cnblogs.com/polly333/p/4760275.html

1.排序

http://forum.eepw.com.cn/thread/280064/1
浙大数据结构
http://www.icourse163.org/learn/ZJU-93001?tid=1002019005#/learn/forumindex
效率:快排》冒泡》插入=选择;
但快排抵抗垃圾数据能力太差;
推荐用归并排序,速度仅次于快排,抵抗垃圾数据的能力较强

目前排列最快的是索引排序(大牛们都这样说的)。
另外俺知道两种排序方法
1,就是对数据库直接排序。可以使用sql语句对后端数据排序。使用这种方法我觉得对你那两种情况都一样。
2,分段读取后端的数据,然后利用DataSet(BCB的牛技术)一类控件的Data属性。首先判断Data中的数据是否已经排序 如果没有排序就排序,然后再读下一段数据,再判断,以此类推。
那种更快,这得根据实际情况,都有优缺点。

100万行的数据别说排序,就是读取也是个问题!能否放到StringGrid,即使放得能否滚动查看?
建议每次读取部分数据,比如按行读取,指定一个索引值,判断第2列数是否和索引对应,如果对应就读入并写入到StringGrid里。

建议使用快速排序或堆排序。
如果在外存储器中,可使用归并排序。
http://bbs.csdn.net/topics/190147318

归并排序

未完成
void Merge(int sourceArr[],int tempArr[],int startIndex,int midIndex,int endIndex)
{
int i = startIndex,j=midIndex+1,k=startIndex;
while(i!=midIndex+1&&j!=endIndex+1)
{
if(sourceArr[i]>sourceArr[j])
tempArr[k++] = sourceArr[j++];
else
tempArr[k++] = sourceArr[i++];
}

2.插入
算导看到2.2分析算法 https://pan.baidu.com/disk/home#list/vmode=list&path=%2F%E6%95%B0%E6%8D%AE%E7%BB%93%E6%9E%84%E4%B8%8E%E7%AE%97%E6%B3%95%2F%E6%B7%98%E5%AE%9D%E7%AE%97%E5%AF%BC

二 基本数据结构-栈,队列,二叉树与堆

堆:malloc申请存储区

先研究树再图;查找算法扩展思考 例子:8球中有一瑕疵球通过2次称量求出;
是什么?为什么需要?怎么实现?生活中例子,结合工作,区别(补图 举例 作用 对数据结构的进一步理解:纯软件思路的人为实现,用顺序或链式的存储方式定义数据逻辑结构,思考:数据结构的实现蕴含算法的思想吗)


红黑树(粤嵌书P273)伸缩性

下一步:哈希表(适用范围
快速查找,删除的基本数据结构,通常需要总数据量可以放入内存)
数据量大有优势-空间换时间

Hash与Map的区别
权衡三个因素: 查找速度, 数据量, 内存使用,可扩展性,有序性

算法速度级别(查找?):常数级O(1)>O(log2n)>n(线性阶)>线性对数阶nlog2n>平方阶n*n>立方阶>k次
方阶>指数阶(2的n次方)

算法执行期间所需要的存储空间包括3个部分:
·算法程序所占的空间;
·输入的初始数据所占的存储空间;
·算法执行过程中所需要的额外空间。
在许多实际问题中,为了减少算法所占的存储空间,通常采用压缩存储技术。

链表

单链表(空头)插入节点.png
红线部分什么意思.png

栈:先进后出

作用(将一个整数,转换成指定的进制 2 8 16)

队列:先进先出

二叉树的遍历

https://mp.weixin.qq.com/s?__biz=MzAxMTI4MTkwNQ==&mid=2650825031&idx=1&sn=f07a913f332f5ddf2054f7ace0b9ceaa&chksm=80b7b5d9b7c03ccff47951986df91202f5a13a438dc42d05836e3e6591ecbce713e062a92fbd&mpshare=1&scene=1&srcid=0315lbhX4o7l0LE43P32MAHo#rd
前序,中序,后序,按层
前序:根---》左---》右
最开始的根一定是最顶层的那个根节点

  中序:左---》根---》右   如何实现(贝讯笔试)
      最开始的左是图中最底层,最左边的那个左孩子
  后序:左---》右---》根
  按层:从上到下,从左到右

套路:先排能看到的,然后用规则填充;规则很明确,但是结合具体的二叉树去分析的时候,注意:每个节点有多重身份(根,左,右)--->你在套用这些规则的时候,你必须递归地去套用一次口诀
(应用:树结构.在一个树里找指定的结点.写游戏的时候,我把场景放到节点上,这样出了一个场景,就切到父节点的场景.这个叫做'入口'技术,通过变换节点在树中的位置,打开同一个门,就可以到不同的地方.泛泛的二叉树没怎么用,不过排序二叉树倒是不错,提高查找速度.我在游戏里面用了,很有效果哦:))

用的最多的应该是平衡二叉树,有种特殊的平衡二叉树红黑树,查找、插入、删除的时间复杂度最坏为O(log n)Java集合中的TreeSet和TreeMap,C++ STL中的set、map,以及Linux虚拟内存的管理,都是通过红黑树去实现的。还有哈夫曼树编码方面的应用。B-Tree,B+-Tree在文件系统中的应用。如有错误或遗漏还请各位指正补充。

二叉树中的二叉查找树,可以使用 ”中序遍历“ 来排序。

文件系统和数据库系统一般都采用树(特别是B树)的数据结构数据,主要为排序和检索的效率。二叉树是一种最基本最典型的排序树,用于教学和研究树的特性,本身很少在实际中进行应用,因为缺点太明显了

二叉树:可为空 (深)度与层 表达式
三叉树:
栈:底压栈代表只能弹倒序 题目意思是动态的 不是一个顺序
图:领接表 广(深)度优先
快速排序

三 复杂数据结构

四 实用算法-无人机工控等(PID学习笔记)

0.棋牌游戏,多状态条件判断

百余张棋牌,分花色实时牌面分析


image.png

程序思路.png

https://blog.csdn.net/qq229596421/article/details/51419813
PID是工业常见控制算法
比例proportion
积分integration
微分differential
有什么用?怎么实现?应用场景?用C++如何实现?发展及拓展?使用注意问题?

1.控制算法

有哪些:二位式控制(弊端:返回值单一 不能达到理想值 延迟 效率低)
pv(控制对象)当前状态值 sv用户设定(目标)值(按钮或上拉电阻传入设定值给到算法,

算法输出out去控制负载,负载再将返回值经传感器去到算法)

2.PID如何解决(思想)

偏差E=Sv-Pv 不同:历史偏差(存储器) Pv取样值(开机以来每

隔固定时间与Sv相减然后存储,又分为:历史偏差 当前偏差 最近偏差,叠加三次的值然

后输出out)

分析:
1.开机以来传感器所有的采样点的数据序列
序列:x1(第一秒钟值) x2.....xk,
2.分析采样点数据序列,挖掘三方面信息
①Ek =Sv-Xk现在时间点传感器回来值与设定值偏差程度

0:控制没达标
=0:刚好
<0:超标

POUT = Kp*Ek+OUT0 放大偏差 ----比例控制 PWM(脉冲)信号-侧面控制负载 缺陷:值

相等就失控(没误差控制不了)

②Sk = E1+E2+.....Ek-1+Ek //可正可负

0:大多数时间未达标 =0: <0:
IOUT=Kp*Sk+OUT0->积分算法(考虑了历史状态)->+OUT0代表历史没有问题
把问题控制在没有发生之前

③最近两次偏差相减 Dk = E(k)-E(k-1)//最后两个数想减

0: 偏差更大,越来越偏离目标(趋势)
DOUT = Kp*Dk+OUT0 --微分控制(不能单独行动)

2.PID算法 -微分和定积分
2.1 卡尔曼滤波
2.2最优估计算法

2.3为什么不用欧拉角来表示旋转而要引入四元数
一方面是因为欧拉角微分方程中包含了大量的三角运算,这给实时解算带
来了一定的困难。而且当俯仰角为90度时方程式会出现神奇的“GimbalLock”。
所以欧拉角方法只适用于水平姿态变化不大的情况,而不适用于全姿态飞行器的姿态确定。
四元数法只求解四个未知量的线性微分方程组,计算量小,易于操作,是比较实用的工程方法。

四元数是一种超复数。如把四元数的集合考虑成多维实数空间的话,四元数就代表
k i j 着一个四维空间,相对于复数为二维空间。
简而言之,四元数包含了刚体旋转的所有信息,而在四旋翼飞行器的姿态解算中,
往往使用的是四元数微分方程对四元数进行更新

define Kp 2.0f //加速度权重,越大则向加速度测量值收敛越快

define Ki 0.001f //误差积分增益

五 STL

Vector向量容器 动态数组 节省存储

iterator迭代器 智能指针 被其它嵌入内部

六 图

算导2.2答案 http://www.cnblogs.com/geniuspig/p/7215503.html
http://www.bianceng.cn/Programming/C/201306/36691.htm
http://www.jb51.net/article/55232.htm
http://blog.csdn.net/myan/article/details/649018
http://www.bianceng.cn/Programming/C/201306/36691.htm

应用实例

1.广州BRT

实时到站信息 大站熟悉-小路 灵活性 通用快速出门时段

2.音视频传输

压缩算法

效率 完整性 tencent图形压缩

图像处理算法

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 213,992评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 91,212评论 3 388
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 159,535评论 0 349
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 57,197评论 1 287
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 66,310评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 50,383评论 1 292
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,409评论 3 412
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 38,191评论 0 269
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,621评论 1 306
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,910评论 2 328
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 39,084评论 1 342
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,763评论 4 337
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 40,403评论 3 322
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 31,083评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,318评论 1 267
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,946评论 2 365
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,967评论 2 351

推荐阅读更多精彩内容