java数据结构和算法

来源:互联网 发布:易语言天龙八部源码 编辑:程序博客网 时间:2024/05/21 01:58

常见的数据结构

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

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

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

算法

算法 描述 复制 比较 交换 冒泡 通过n次循环:两两比较并交换,使得每次循环后选出第n值 O() O(N2/2) O(N2) 选择 通过n次循环:与选出的最值比较并交换,使得每次循环后选出第n值。与冒泡相比减少了交换次数 O() <=O(N2/2) O() 插入 从左边一个数的有序数组开始,右边的元素依次插入到左边的有序数组。当数量较多时二分查找的使用使得比较次数减少。 O() O() O() 希尔 O() O() O() 快速 O() O() O() 基数 O() O() O()
0 0
原创粉丝点击