新乐博平台

首页 > 正文

「干货」数据结构第一讲

www.viviancordeiro.com2019-08-25

为什么要研究数据结构

1.语言是一样的

人们常说编程语言是相同的,掌握一种,其他语言很容易掌握。

判断这些概念,这似乎支持上述观点,但每种编程语言都有自己的使用范围,有自己的好东西,即使node.js可以统一在前后语言中,总有他不称职,比如机器学习。像Python这样的近乎通用的语言无法对高性能计算做任何事情。

事实上,真正弄清楚的不是语言,而是数据结构和算法。存在来自编程语言的数据结构和算法。不同的语言有不同的实现版本,但内部逻辑不会改变,提议的编程思想也不会改变。

2.业务场景

一个。前端通过websocket获取数据。数据是特定坐标。获取坐标时,在前端地图上显示光圈。但是,后端不会定期发送,可能会一次推送几次,或者可能会在几秒钟内推送。当数据特别频繁时,坐标会显示在地图上,地图会非常凌乱,所以对于前端,做一个限制,前端同时显示最多10个坐标。新坐标需要挤出最旧的坐标,每个坐标最多可以显示5秒。

是否可以通过队列,每个节点包括数据坐标和在后台传递的当前时间。当有超过10个坐标时,头部不在队列中,并且前端每秒都会执行事件循环,检查头部。部门是否超过5秒,如果超过,则头部不在队列中。

b,H5翻页现场业务,

您可以添加页面,删除页面,移动页面和翻页。我怀疑大部分时间应该操纵数组,通过arr,索引和for循环呈现页面。

改变主意:

是否可以在双链接列表中执行这些操作,每个页面节点,包括此页面上的数据、上一页的指向和下一页的指向,添加操作时,尾部节点中的下一个节点指向新页面。删除页面时,下一页指向已删除页面的下一页。移动页面实际上是先完成页面的删除。当添加页面并向后查看页面时,它总是在下一步向前操作。仔细看,它实际上总是在运行前。

数据,存储时首先读取更新数据中的数据(这将增加服务器压力)

三。学习数据结构的目标

a)提高编程能力

b)提高算法的能力。数据结构的本质是总结和完善存储管理和使用数据的许多模式。这些模型是最基本的编程思想的背后。理解这些想法需要一些时间,而不是学习几个数据结构。我可以在工作中接触,但我已经学习了数据结构,这对提高我的能力非常有帮助。

当我们不能完全理解这些编程思想和管理方法时,我们只需要学习特定的工具和方法。

4。什么是数据结构和算法?

斯塔克羽毛球、羊肉串

队列排队,优先级队列VIP用户、军队、老人、排队优先级

链表猴子钓鱼月,包括单链表、双链表

集合--在ES6中设置

字典--ES6中的映射

hashset讨论过,因为数组的长度不固定,所以角用散列表示,并且循环尝试使用foreach自动筛选空数组的位置输出

图 - 迷宫:深度搜索和广度搜索,请参阅此

树 - 研究小组讨论了可以用二叉树解决的问题

假设你正在爬楼梯。您需要第n个订单才能到达建筑物顶部

你每次可以爬1步或2步。有多少种不同的方法可以攀爬到建筑物的顶部?

注意:给定n是正整数。

例1:

输入:2

输出:2

说明:有两种方法可以爬到建筑物的顶部。

1.第一顺序+第一顺序

2.第二顺序

例2:

输入:3

输出:3

说明:有三种方法可以爬到建筑物的顶部。

1.第一个订单+第一个订单+第一个订单

2.第一顺序+第二顺序

3.第二顺序+第一顺序

功能节点(数据){

//二叉树节点

This.data=数据;

This.left=NULL;

This.right=NULL;

}

函数方法(n){

设head=new Node(null);

设num=0;

函数A(node,n,num){

如果(n返回0;

} else if(n - node.data==0){

返回1;

}

n - =node.data;

如果(n==1){

Node.left=new Node(1);

返回num + A(node.left,n);

} else if(n>=2){

Node.left=new Node(1);

Node.right=new Node(2);

返回num + A(node.left,n,num)+ A(node.right,n,num);

}

}

如果(n==1){

Head.left=新节点(1);

返回A(head.left,n,num);

} else if(n>=2){

Head.left=新节点(1);

Head.right=new Node(2);

返回A(head.left,n,num)+ A(head.right,n,num);

}

}

以这种方式,在打印头部的情况下,将打印出所有轨迹。如果不考虑轨迹路径,建议使用Fibonacci序列。

b)冒泡排序,排序排序,插入排序,合并排序,快速排序,顺序搜索,二分查找

5.学习数据结构需要了解哪些知识

a)数组

b)类定义类的方法

堆栈数据结构

1,堆栈的定义

堆栈是一种特殊的线性表,只能在堆栈顶部操作。它具有先进的后期输出(后进先出)功能。以下显示了堆栈的工作特性

t01c7f39af6d5775704.jpg

2.堆栈的实现

从数据存储的角度来看,实现栈可以用数组实现。注意:只能用数组实现?

a,堆栈的几种方法:

* push将元素添加到堆栈顶部

* pop弹出堆栈的顶部元素

* top返回堆栈的顶部元素

* isEmpty确定堆栈是否为空

* size返回堆栈中元素的数量

*清除堆栈

3,代码实现

//push pop top isEmpty size clear with a array

函数堆栈(){

Var items=[];

Var min=null;

//将元素添加到堆栈顶部

This.push=function(item){

Items.push(项目);

};

//弹出堆栈的顶部元素

This.pop=function(){

返回items.pop();

};

//返回堆栈的顶部元素,不会弹出

This.top=function(){

退货[items.length - 1];

};

//确定堆栈是否为空

this.isEmpty=function(){

返回items.length==0;

};

//返回堆栈中的元素数

This.size=function(){

返回items.length;

};

//清空堆栈,不建议使用items.length=0,学术讨论,

//说一个,赋值更快,长度为0,影响其他使用的内存

This.clear=function(){

项=[];

};

}

4.练习题

法官(abc),(bcd),(ab(cd)),括号是否合法

例如:(abc)合理

(bcd)(不合理的

))是不合理的

功能检查(str){

设len=str.length;

让stack=new Stack();

For(let i=0; i if(str [i]==x27;(x27;){

Stack.push(X27;(X27);

} else if(str [i]==x27;)x27;){

如果(stack.isEmpty()){

返回false;

} else {

Stack.pop();

}

}

}

返回stack.isEmpty();

}

给出消息:每当你怀疑学习数据结构的必要性和功能时,如果你的手上只有一把锤子,那么眼睛就是指甲

作者:ECHINFO秀 - 王明

热门浏览
热门排行榜
热门标签
日期归档