资讯专栏INFORMATION COLUMN

js数据结构和算法(一)概述

xumenger / 1133人阅读

摘要:程序设计数据结构算法数据结构数据结构就是关系,没错,就是数据元素相互之间存在的一种或多种特定关系的集合。物理结构是指数据的逻辑结构在计算机中的存储形式。

程序设计=数据结构+算法
数据结构

数据结构就是关系,没错,就是数据元素相互之间存在的一种或多种特定关系的集合。

传统上,我们把数据结构分为逻辑结构和物理结构。

逻辑结构:是指数据对象中数据元素之间的相互关系,也是我们今后最需要关注和讨论的问题。

物理结构:是指数据的逻辑结构在计算机中的存储形式。

常用的数据结构有:

数组,队列(queue),堆(heap),栈(stack),链表(linked list ),树(tree),图(graph)和散列表(hash)

栈(stack):运算只在表的一端进行;队列(Queue):运算只在表的两端进行。

队列(queue)是只允许在一端进行插入操作,而在另一端进行删除操作的线性表。

与栈相反,队列是一种先进先出(First In First Out, FIFO)的线性表。

与栈相同的是,队列也是一种重要的线性结构,实现一个队列同样需要顺序表或链表作为基础。

四大结构

集合结构

线性结构

树形结构

图形结构

顺序存储和链式存储

数据元素的存储结构形式有两种:顺序存储和链式存储。
例如我们编程语言的数组结构就是这样滴。

链式存储结构:是把数据元素存放在任意的存储单元里,这组存储单元可以是连续的,也可以是不连续的。

链式存储结构

线性表

线性表:就好像是排队一样,具有线一样性质的结构,它是由零个或多个数据元素组成的有限序列。

若元素存在多个,则第一个元素无前驱,而最后一个元素无后继,其他元素都有且只有一个前驱和后继。

若将线性表记为(a1,…,ai-1,ai,ai+1,…an),则表中ai-1领先于ai,ai领先于ai+1,称ai-1是ai的直接前驱元素,ai+1是ai的直接后继元素。

数据类型

数据类型:是指一组性质相同的值的集合及定义在此集合上的一些操作的总称。

例如很多编程语言的整型,浮点型,字符型这些指的就是数据类型。

在计算机中,内存不是无限大的,如果要计算或处理一些较大的数时,需要开辟较大的内存空间,于是就要对计算机进行数据类型分类,分出多种数据类型来适合各种不同的计算条件差异。

在C语言中,数据类型可以分为:

原子类型:不可以再分解的基本类型,例如整型、浮点型、字符型等。

结构类型:由若干个类型组合而成,是可以再分解的,例如整型数组是由若干整型数据组成的。

算法

算法是解决特定问题求解步骤的描述,在计算机中表现为指令的有限序列,并且每条指令表示一个或多个操作。

算法具有五个基本特征:输入、输出、有穷性、确定性和可行性。

输出:算法至少有一个或多个输出。
有穷性:指算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且每一个步骤在可接受的时间内完成。

确定性:算法的每一个步骤都具有确定的含义,不会出现二义性。

可行性:算法的每一步都必须是可行的,也就是说,每一步都能够通过执行有限次数完成。

正确性:算法的正确性是指算法至少应该具有输入、输出和加工处理无歧义性、能正确反映问题的需求、能够得到问题的正确答案。

高级语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:

1. 算法采用的策略,方案
2. 编译产生的代码质量
3. 问题的输入规模
4. 机器执行指令的速度

我们可以想象,线性表有两种物理存储结构:顺序存储结构和链式存储结构。

线性表的顺序存储结构,指的是用一段地址连续的存储单元依次存储线性表的数据元素。

线性表(a1,a2,…,an)的顺序存储如下:

线性表顺序存储的结构
#define MAXSIZE 20    

typedef int ElemType;

typedef struct
{
    ElemType data[MAXSIZE];
    int length;    // 线性表当前长度
} SqList;

总结下,顺序存储结构封装需要三个属性:

存储空间的起始位置,数组data,它的存储位置就是线性表存储空间的存储位置。

线性表的最大存储容量:数组的长度MaxSize。

线性表的当前长度:length。

插入算法的思路
    如果插入位置不合理,抛出异常;

    如果线性表长度大于等于数组长度,则抛出异常或动态增加数组容量;

    从最后一个元素开始向前遍历到第i个位置,分别将它们都向后移动一个位置;

    将要插入元素填入位置i处;

    线性表长+1。

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/85286.html

相关文章

  • 无线网络技术学习总结

    摘要:通过通信线路连入通信子网终端是用户访问网络的界面网络操作系统是相对于主机操作系统而言的。接收方使用同一扩频码进行扩解。 目录 一、计算机网络 1.计算机网络技术概述 2.计算机网络分类 3.无线网络分类 二、无线通信和网络仿真技术基础 1.基本概念 2.调制 (1)、概述 (2)、常用方式 ...

    animabear 评论0 收藏0
  • Java设计模式概述

    摘要:设计模式的类别设计模式一共分为种类型,共种。属于结构型的设计模式适配器模式桥接模式装饰模式组合模式外观模式享元模式代理模式。问题描述了应该在何时使用设计模式。解决方案描述了设计的组成成分,它们之间的相互关系及各自的职责和协作方式。 设计模式概述 1. 设计模式是什么 我们在平时编写代码的过程中,会遇到各种各样的问题,细想一下很多问题的解决思路大致一样的,这时候你就可以把解决问题的思路整...

    leon 评论0 收藏0
  • Java多线程进阶()—— J.U.C并发包概述

    摘要:整个包,按照功能可以大致划分如下锁框架原子类框架同步器框架集合框架执行器框架本系列将按上述顺序分析,分析所基于的源码为。后,根据一系列常见的多线程设计模式,设计了并发包,其中包下提供了一系列基础的锁工具,用以对等进行补充增强。 showImg(https://segmentfault.com/img/remote/1460000016012623); 本文首发于一世流云专栏:https...

    anonymoussf 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<