java数据结构和算法

2023-05-16

常见的数据结构

  • 数组—>方便通过下标随机访问数据
    • 有序数组
    • 无序数组
    • 数组大小一旦确定无法变更

    • 先进后出
    • 只能压入(push)/查看(peek)/删除(pop)栈顶
    • 无法查找
  • 队列
    • 先进先出
    • 从队首删除(remove),从队尾插入(insert),查看(peek)队首
    • 循环队列
      • 环绕式处理
    • 优先级队列
  • 链表
    • 单链表
      • 在链首插入(因为没有序号,只有相对位置)
      • 在特定数据后插入
      • 删除特定数据
    • 双端链表
      • 可以在链首和链尾插入
      • 因为删除最后一个数据后无法维护链尾,所以无法删除任何数据
    • 双向链表
      • 无删除限制
    • 有序链表

    • 一个根节点
    • 二叉树
      • 每个父节点至多两个子节点
      • 搜索二叉树
        • 左子节点比父节点小
        • 右子节点比父节点大
数据结构子结构描述特点插入/删除查找遍历
线性表链表以相对位置放置数据方便扩展O(1)O(N)O(N)
数组以绝对位置放置数据大小一旦确定就无法修改O(1)O(N)O(N)
有序数组按关键字序列以绝对位置放置数据二分查找O(1)O( log2N log 2 ⁡ N )O(N)
先进后出模拟栈O(1)++++
队列先进先出模拟队列O(1)++++
二叉树父节点至多有两个子节点模拟现实树状对象O(1)O(N)递归
搜索二叉树实用,平衡插入和查找的效率方便决定位置查找O( log2N log 2 ⁡ N )O( log2N log 2 ⁡ N )递归

算法

算法描述复制比较交换
冒泡通过n次循环:两两比较并交换,使得每次循环后选出第n值O()O( N2/2 N 2 / 2 )O( N2 N 2 )
选择通过n次循环:与选出的最值比较并交换,使得每次循环后选出第n值。与冒泡相比减少了交换次数O()<=O( N2/2 N 2 / 2 )O()
插入从左边一个数的有序数组开始,右边的元素依次插入到左边的有序数组。当数量较多时二分查找的使用使得比较次数减少。O()O()O()
希尔O()O()O()
快速O()O()O()
基数O()O()O()
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java数据结构和算法 的相关文章

随机推荐

  • 在java中 随机产生10个范围在1~100的随机数放置到数组中,重复的数去掉,使用原生的冒泡排序,然后遍历打印排序后的结果

    在java中 随机产生10个范围在1 100的随机数放置到数组中 xff0c 重复的数去掉 xff0c 使用原生的冒泡排序 xff0c 然后遍历打印排序后的结果 随机范围1 100的随机数 10个 放置到数组中 xff0c 重复的数组去掉
  • java.lang.ClassCastException: class org.apache.logging.slf4j.SLF4JLoggerContext cannot be cast

    spring boot 3 0 0 使用gradle7 6整和myabtis plus 3 5 3 1 出现如下报错 java lang ClassCastException class org apache logging slf4j S
  • java上传图片或者文件到nginx服务器

    红线部分就是Nginx上的路径 注解 64 requiresPermissions这个是权限的问题 可以去掉 千万不要忘了红线部分 这是上传图片 其实上传文件跟这个也是一样的 当然这里面少了一些判断 比如限制文件的大小等 当你完成之后访问你
  • jsp页面的onclick事件

    lt input nclick 61 34 document all WebBrowser ExecWB 1 1 34 type 61 34 button 34 value 61 34 打开 34 name 61 34 Button1 34
  • 位运算abc

    位运算 xff0c 针对单个位进行的运算方式 xff0c 不涉及阶 常见的位运算包括位与 amp 位或 异或 位非 移位 左移 lt lt 和右移 gt gt 等运算 位运算常见的用处有 xff1a 对二进制数指定位置0 xff0c 1取出
  • c混合运算和数据类型转换

    C语言表达式进行混合运算时 xff0c 运算规则 xff1a 运算符相应的数据先做类型统一根据运算变量决定运算精度根据结果变量决定结果精度 其中 xff0c 类型统一时的默认的数据类型转换规则如下图 xff1a
  • oracle-plsql初步使用

    之前使用Oracle数据库都是通过jdbc接口调用oracle 最近由于工作的关系需要通过tns操作Oracle数据库 xff0c 于是把最近学习和收集的一点内容记录下来 xff0c 以便以后再次使用时参考 概念先行概念落地登陆常用sql利
  • ubuntu on win10

    开启大门 设置 安全和更新 针对开发人员 使用开发人员功能 开发人员模式控制面板 程序和功能 启用和关闭windows功能 适用于Linux的windows子系统 xff08 beta xff09 进入cmd命令窗口 xff0c 输入bas
  • Lamp环境搭建和ucenter/ucenterhome

    环境 xff1a Centos 7 3 1611 步骤 xff1a 安装apache php软件 xff1a yum install httpd php php mysql安装mysql mariadb xff0c 以Centos系统为例
  • win10安装系统自带应用

    以管理员身份启动系统自带的Windows Powershell组件 xff0c 接着输入Get AppxPackage allusers Select Name PackageFullName xff0c 通过该命令获取当前系统安装的所有应
  • SQL DDL从MySQL到Oracle

    最新一个项目的sql ddl为MySQL准备的 xff0c 我想在Oracle中使用 之前不太了解两者的区别 xff0c 结果报错一坨 于是顶着头皮开始看什么问题 xff0c 以下是我陷过的坑 xff0c 让大家看看 废话少说 xff0c
  • 7 MySQL安全概述

    1 常见因素 密码 常见的密码要求 xff1a 包含大小写 数字 特殊字符限制 长度 不要保存密码明文 为防止彩虹表 xff0c 也不要简单的使用hash方法 xff0c 可以采用hash hash password 43 salt 的方式
  • 关于SIFT和SURF介绍

    SIFT xff08 尺度不变特征变换 xff09 关于一些角点检测技术 xff0c 比如 Harris 等 它们具有旋转不变特性 xff0c 即使图片发生了旋转 xff0c 我们也能找到同样的角点 xff0c 但如果进行图像缩放 xff0
  • 7.2 MySQL权限系统原理

    MySQL权限系统的用户接口由SQL语句组成 xff0c 比如create user xff0c grant xff0c revoke 在数据库内部 xff0c MySQL把权限信息保存在MySQL database的赋权表中 MySQL服
  • 7.2.1 MySQL提供的权限

    MySQL提供的权限应用于不同的上下文和不同的操作级别 xff1a 管理权限使用户可以管理MySQL服务器的操作 这些权限是全局性的 xff0c 因为它们不是局限于某个特定的数据库 数据库权限应用于数据库和数据库的组成对象 这些权限可以被赋
  • 7.3 MySQL用户账号管理

    7 3 1用户名称和密码 MySQL把账号存储在mysql系统数据库的user表中 一个账号被定义成一个用户名称和能够连接到服务器的客户端主机 xff08 群 xff09 账号都有一个密码 MySQL支持授权插件 xff0c 也就是说一个账
  • 7 Oracle 管理用户和安全

    用户和安全概览 用户账号由一个用户名确认 xff0c 定义了用户的属性包括 xff1a 鉴权方式 数据库鉴权密码 永久存储和临时存储的默认表空间 表空间配额 账号状态 xff08 是否锁定 xff09 密码状态 xff08 是否过期 xff
  • linux-bash-find

    FIND 1 General Commands Manual FIND 1 1 NAME find search for files in a directory hierarchy 2 SYNOPSIS find H L P D debu
  • awk、任务管理

    awk awk F 39 39 39 span class hljs operator span class hljs keyword BEGIN span l 61 span class hljs number 0 span span c
  • java数据结构和算法

    常见的数据结构 数组 gt 方便通过下标随机访问数据 有序数组无序数组数组大小一旦确定无法变更栈 先进后出只能压入 xff08 push xff09 查看 xff08 peek xff09 删除 xff08 pop xff09 栈顶无法查找