数据结构笔记—第一篇 数据结构概述

第一篇数据结构概述

1.数据结构概述

什么是数据结构?

简单来说,就是计算机存储,组织数据的方式;它包含三方面的内容,逻辑关系、存储关系及操作。 记住关键字:存储——->组织 (记忆:锅里放着织布机,存织)

常见的数据结构:

以下借用网上常讲说法:(记忆:大家站着–队列–数大链子手表,树底下都是的,形成一个爱心图,一会堆起来一会散开)

  • 栈(Stack):栈是一种特殊的线性表,它只能在一个表的一个固定端进行数据结点的插入和删除操作。
  • 队列(Queue):队列和栈类似,也是一种特殊的线性表。和栈不同的是,队列只允许在表的一端进行插入操作,而在另一端进行删除操作。
  • 数组(Array):数组是一种聚合数据类型,它是将具有相同类型的若干变量有序地组织在一起的集合。
  • 链表(Linked List):链表是一种数据元素按照链式存储结构进行存储的数据结构,这种存储结构具有在物理上存在非连续的特点。
  • 树(Tree):树是典型的非线性结构,它是包括,2 个结点的有穷集合 K。
  • 图(Graph):图是另一种非线性数据结构。在图结构中,数据结点一般称为顶点,而边是顶点的有序偶对。
  • 堆(Heap):堆是一种特殊的树形数据结构,一般讨论的堆都是二叉堆。
  • 散列表(Hash table):散列表源自于散列函数(Hash function),其思想是如果在结构中存在关键字和T相等的记录,那么必定在F(T)的存储位置可以找到该记录,这样就可以不用进行比较操作而直接取得所查记录。

常见的算法:其实就是我们常说的:增、删、改、查,排序;

以下是各种数据结构的特性:

数据结构笔记---第一篇  数据结构概述

数据结构笔记---第一篇  数据结构概述

有很多数据结构,这里给大家介绍一些,当然这些特性也很难记住,需要用的时候或想起来的时候,查询一下;

另外数据结构,还会牵扯到一些算法比如:排序、递归。

一些相关的定义:

1、数据库:不多作解释;

2、记录:就是数据库中划分成的单元。可以看作是数据库的某一个表,或java的某一个对象,;

3、字段:一条记录通常被划分为几个字段;

4、关键字:在数据库中查找某条记录,需要制定某个字段为关键字;

总结:

正确选择数据结构,会使程序的效率大大提高;算法,就是完成某个特定任务的过程;在Java中算法经常通过类中的方法实现;

第二篇 简单排序

这节中我们将会讲到:冒泡排序、选择排序、插入排序、对象排序以及他们的比较;

1、冒泡排序

冒泡排序算法运行起来非常慢,但是在概念中他是排序算法中最简单的,因此在刚开始研究排序算的时候算是一个非常好的算法;

举例:一对队员需要按身高排列,

冒泡排序总体的算法是这样的:先两两比较,然后按照要求互换位置,循环比较,直到得出结果;计算机不是人类,可以一眼看出,整个队伍,谁高谁低,计算机就是一个近视眼。只能看到跟前的数据;

队伍按高低排序执行如下:

如图:

数据结构笔记---第一篇  数据结构概述

数据结构笔记---第一篇  数据结构概述

遵循的规则就是:

1.两两比较,然后向右移动一位,再比较,一直循环下去;

这样比较下去一直到最右端,有人会说,你还是没有排好啊,是的,你是对的,可是有一点可以保证,就是最高的已然站到的队伍的最右端,不是吗。。。这也是被称为”冒泡排序的原因”,因为最大的数据总是被冒泡到数组的最顶端,就像这个队伍排序,一轮下来,最高的排在了最右端,他冒泡了;

数据结构笔记---第一篇  数据结构概述

第一轮排序后,最高的站到了最右边

然后接着进行下一轮排序,这一轮排序,只需要排到倒数第二个人员,就是右边数第二个人员,因为最高的已经站到最右边了,然后按照这样的方法,直到高低排序好;当然这个过程是复杂的,但是原理就是这样;

所以从以上可以看出,这种算法,是简单的两个两个比较,然后依次比较,过程复杂,当然也就比较慢了,比如,第一轮比较,要比较N-1次,第二轮要比较N-2次,一般来讲总共要比较多少次的,

算下(N-1)+(N-2)+…+1=N*(N-1)/2 10条数据就要比较45次,100条数据就要比较4950次。

Original: https://www.cnblogs.com/luojiesheng/p/13671755.html
Author: 飞快的蜗牛
Title: 数据结构笔记—第一篇 数据结构概述

原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/622519/

转载文章受原作者版权保护。转载请注明原作者出处!

(0)

大家都在看

  • 250_RabbitMQ-集群监控

    集群监控 管理界面监控 tracing日志监控 消息追踪启用与查看 日志追踪 定制自己的监控系统 Zabbix 监控RabbitMQ 集群监控 :::info在广大的互联网行业中R…

    Java 2023年6月7日
    093
  • 使用RocketMQ消费消息

    RocketMQ消费端 今天要来跟大家学习怎样使用RocketMQ来进行消息的消费 先简单创建个Maven项目使用 添加依赖 org.apache.rocketmq rocketm…

    Java 2023年6月5日
    083
  • Redisson报错

    org.redisson.client.RedisResponseTimeoutException: Redis server response timeout (3000 ms)…

    Java 2023年6月6日
    081
  • SpringMVC&Maven进阶

    SpringMVC 3.1 了解SpringMVC 概述 SpringMVC技术与Servlet技术功能等同,均属于web层开发技术 学习路线 请求与响应 REST分割 SSM整合…

    Java 2023年6月6日
    087
  • ArrayList 和 LinkedList 的区别是什么?

    说一下 ArrayList 的优缺点 ArrayList的优点如下:ArrayList 底层以数组实现,是一种随机访问模式。ArrayList 实现了RandomAccess 接口…

    Java 2023年6月13日
    069
  • nginx 配置文件服务器

    csharp;gutter:true; server { listen 80; server_name localhost;</p> <pre><co…

    Java 2023年5月30日
    083
  • 微服务保护

    1.初识Sentinel 1.1.雪崩问题及解决方案 1.1.1.雪崩问题 依赖服务I的业务请求被阻塞,用户不会得到响应,则tomcat的这个线程不会释放,于是越来越多的用户请求到…

    Java 2023年6月9日
    076
  • Java基础之运算符

    Java基础之运算符 Java基础之运算符 – 1.1 运算符介绍 1.1.1 运算符介绍 1.2 算术运算符 1.2.1 介绍 1.2.2 算术运算符一览表 1.2….

    Java 2023年6月15日
    050
  • java笔记

    =====第一个java程序=====public class HelloWorld {public static void main(String[] args) {System…

    Java 2023年5月29日
    047
  • 快速上手Mybatis项目

    1、搭建实验数据库 CREATE DATABASE mybatis; USE mybatis; DROP TABLE IF EXISTS user; CREATE TABLE us…

    Java 2023年6月15日
    064
  • 迭代器Iterator

    迭代器是对集合进行遍历,而每一个集合内部的存储结构都是不同的,所以每一个集合存和取都是不一样,那么就需要在每一个类中定义hasNext()和next()方法,这样做是可以的,但是会…

    Java 2023年6月9日
    054
  • 【数据结构】稀疏数组 — 应用场景,转换的思路分析,代码实现

    楔子: 数据结构包括线性结构和非线性结构。 1、线性结构: 1) 线性结构作为最常用的数据结构,其特点是数据元素之间存在一对一的线性关系 2) 线性结构有两种不同的存储结构,即顺序…

    Java 2023年6月8日
    047
  • JAVA的Proxy动态代理在自动化测试中的应用

    JAVA的动态代理,在MYBATIS中应用的很广,其核心就是写一个interface,但不写实现类,然后用动态代理来实例化并执行这个interface中的方法,话不多说,来看一个实…

    Java 2023年5月29日
    067
  • 程序造假显得很忙

    一 背景 现实总有些奇葩的需求,比如你需要占用 50%的 cpu,或者你需要占用 80%的 cpu 的程序,这个程序没有其他作用,仅仅是为了占用 cpu,空跑,但是其实还隐藏一个需…

    Java 2023年5月30日
    050
  • 使用java实现 多线程 虚拟服务器聊天

    记录一下下面这是根据ServerSocket类实现的虚拟服务器,两台局域网内的客户端进行交流,只能再局域网内,因为这个只是虚拟的服务器。 工具实体类 import java.io….

    Java 2023年6月7日
    067
  • Java 将HTML转为Word

    本文以Java代码为例介绍如何实现将HTML文件转为Word文档(.docx、.doc)。在实际开发场景中可参考此方法来转换。下面详细方法及步骤。 在编辑代码前,请先在程序中导入S…

    Java 2023年5月29日
    077
亲爱的 Coder【最近整理,可免费获取】👉 最新必读书单  | 👏 面试题下载  | 🌎 免费的AI知识星球