1.什么是数据结构?

数据结构就是把数据元素按照一定的关系组织起来的集合,用来组织和存储数据。

1.2.数据结构的分类:

逻辑结构 和物理结构

逻辑结构:

集合结构(无关系)、线性结构(一对一)、树形结构(一对多)、图形结构(多对多)

物理结构:

顺序存储结构(不方便插入)、链式结构(不方便查找)(指针)

1.3.什么是算法?

根据一定的条件,对数据进行计算,得到需要的结果。(用(最佳的)数学模型解决问题)

举例:云南到北京的出行方式。在北京买房的购买方式

1.4算法的初步体验

优秀的算法:

最少的时间,占用最少的内存

举例:

计算1-100求和。for循环累加 VS 高斯公式

计算10的阶乘。暴力算法 VS 递归

2.算法分析

2.1.算法的时间复杂度分析(分析计算时间)

事后分析方法:

使用测试程序计算执行时间

有弊端:干扰执行时间,运行环境不同

事前分析法(未来要用的方法):

1)算法采用的策略和方法(程序员可以干预)

2)编译产生的代码质量(由编译器决定)

3)问题的输出规模(取决于实际需求)

4)机器执行指令的速度(不能干预)

2.1.2函数渐进增长(比较算法的相对增长率,相对增长率越小,算法的效率越高)

规律:

随着输入规模的增大,算法的常数操作可以忽略不计

随着输入规模的增大,与最高次项相乘的乘数可以忽略不计

最高次数项的指数大的,随着n的增长,结果也会增长得特别快

算法中n的最高次幂越小,算法效率越高

2.1.3大O计法

前提:程序的执行次数=程序的执行时间

T(O)=O(f(n))

表示

3次……O(1)

n+3次    O(n)

n^2+2  O(n^2)

表示方法:

用常数1取代运行时间中的所有加法常数

在修改后的的运行次数中,只保留高阶乘

如果最高阶乘存在,且常数因子不为1,则去除这个项相乘的常数

2.1.3.1常见的大0阶

1)线性阶

一般含有非嵌套循环(一个for循环执行n次)

2)平方阶

双层嵌套循环(例如两个个for循环每个都执行n次)

3)立方阶

三层嵌套循环

4)对数阶

范围内乘法累加计算循环,计算循环次数则需要用log计算

规律:可以忽略底数

5)常数阶

复杂度:

O(1)<O(logn)<O(nlogn)<O(n^2)<O(n^3)............

2.1.4函数调用的时间复杂度分析

具体情况具体分析,灵活运用

2.1.5 最坏情况(最好,最坏,平均)

2.2空间复杂度分析(嵌入式开发)Java默认是考虑时间复杂度

1)Java的数据类型占用内存情况

byte ,1

short,2

int,4

long,8

float,4

double,8

boolean,1

char,2

2)计算机访问内存都是一次一字节

3)一个引用需要8个字节

4)创建对象16个字节

5)不够8字节,都会自动填充为8字节

6)数组,保存数组长度,不够8的倍数,填充8字节

2.2.案例 数组返转,反会数组

数据结构和算法day1(Java)的更多相关文章

  1. 数据结构与算法【Java】02---链表

    前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...

  2. 数据结构与算法【Java】03---栈

    前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...

  3. 数据结构与算法【Java】05---排序算法总结

    前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...

  4. 数据结构与算法【Java】08---树结构的实际应用

    前言 数据 data 结构(structure)是一门 研究组织数据方式的学科,有了编程语言也就有了数据结构.学好数据结构才可以编写出更加漂亮,更加有效率的代码. 要学习好数据结构就要多多考虑如何将生 ...

  5. 常用数据结构及算法C#/Java实现

    常用数据结构及算法C#实现 1.冒泡排序.选择排序.插入排序(三种简单非递归排序) ,, , , , , , , , , }; //冒泡排序 int length = waitSort.Length; ...

  6. 数据结构与算法之java语言实现(一):稀疏数组

    一.概念&引入 什么是稀疏数组? 稀疏数组是面对一个二维数组中有众多重复元素的情况下,为了节省磁盘空间,将此二维数组转化为更加节省空间的一种数组,我们叫他稀疏数组. 只是听概念或许会看不明白, ...

  7. 数据结构和算法(java版本)学习指南

    1 数据结构和算法内容介绍 2 数据结构和算法的概述 3 稀疏数组SparseArray

  8. 数据结构与算法—二叉排序树(java)

    前言 前面介绍学习的大多是线性表相关的内容,把指针搞懂后其实也没有什么难度.规则相对是简单的. 再数据结构中树.图才是数据结构标志性产物,(线性表大多都现成api可以使用),因为树的难度相比线性表大一 ...

  9. 数据结构和算法(Java版)快速学习(线性表)

    线性表的基本特征: 第一个数据元素没有前驱元素: 最后一个数据元素没有后继元素: 其余每个数据元素只有一个前驱元素和一个后继元素. 线性表按物理存储结构的不同可分为顺序表(顺序存储)和链表(链式存储) ...

  10. 数据结构和算法(Java版)快速学习(数组Array)

    Java数组 在Java中,数组是用来存放同一种数据类型的集合,注意只能存放同一种数据类型. 用类封装数组实现数据结构 数据结构必须具有以下基本功能: ①.如何插入一条新的数据项 ②.如何寻找某一特定 ...

随机推荐

  1. MongoDB数据库与Python的交互

    一.缘由 这是之前学习的时候写下的基础代码,包含着MongDB数据库和Python交互的基本操作. 二.代码实现 import pymongo #连接数据库 client=pymongo.MongoC ...

  2. 【精选】前端JS面试题35个

    1.问:什么是匿名函数?作用是什么?           答:没有名字的函数就是匿名函数,作用有三,把函数当作变量赋值,把函数当作参数(回调函数),把函数当作另一个函数的返回值(闭包)         ...

  3. 利用python数据分析

    利用python进行数据分析 本书由Python pandas项目创始人Wes McKinney亲笔撰写,详细介绍利用Python进行操作.处理.清洗和规整数据等方面的具体细节和基本要点.第2版针对P ...

  4. cs231n__4.2 神经网络 Neural networks

    CS231n 学习笔记 4.2 神经网络 Neural networks 之前我们已经使用了 很多线性分类函数 现在我们不用单变换的: 我们首先有线性层,然后有这个非线性计算,继而在顶层再加入另一个线 ...

  5. MongoDB从入门到实战之.NET Core使用MongoDB开发ToDoList系统(1)-后端项目框架搭建

    前言: 前面的四个章节我们主要讲解了MongoDB的相关基础知识,接下来我们就开始进入使用.NET7操作MongoDB开发一个ToDoList系统实战教程. MongoDB从入门到实战的相关教程 Mo ...

  6. Spark详解(01) - Scala编程语言

    Spark详解(01) - Scala编程语言概述 Scala官网:https://www.scala-lang.org/ 什么是Scala 从英文的角度来讲,Scala并不是一个单词,而是Scala ...

  7. BC4-牛牛学说话之-浮点数

    题目描述 会说整数之后,牛牛开始尝试浮点数(小数),输入一个浮点数,输出这个浮点数. 输入描述 输入一个浮点数 输出描述 输出一个浮点数,保留三位小数 示例 1 输入:1.359578 输出:1.36 ...

  8. Redis+Hbase+RocketMQ 实际使用问题案例分享

    需求 将Hbase数据,解析后推送到RocketMQ. redis使用list数据类型,存储了需要推送的数据的RowKey及表名. 简单画个流程图就是: 分析及确定方案 Redis 明确list中元素 ...

  9. file过滤器的原理和使用-FileNameFilter过滤器的使用和lambda优化程序

    file过滤器的原理和使用 java.io.FileFilter是一个接口,是File的过滤器.该接口的对象可以传递给File类的listFiles(FileFilter)作为参数,接口中只有一个方法 ...

  10. java 进阶P-3.7

    HASH表 Java 集合框架 HashMap 是一个散列表,它存储的内容是键值对(key-value)映射. HashMap 实现了 Map 接口,根据键的 HashCode 值存储数据,具有很快的 ...