博客专栏  >  互联网   >  数据结构与算法分析

数据结构与算法分析

扎扎实实的系统的学习数据结构和算法,使用Java实现。

关注
4 已关注
20篇博文
  • 优先队列(堆)小结

    优先队列(以最小堆为例)优先队列允许至少两种操作:insert(插入),deleteMin(删除最小者)。 二叉堆结构性质堆是一个完全二叉树,底层元素从左到右填入。 完全二叉树的树高为logN.完...

    2017-04-02 16:06
    423
  • 时间复杂度和空间复杂度

    时间复杂度1时间频度一个算法执行所耗费的时间,从理论上是不能算出来的,必须上机运行测试才能知道。但我们不可能也没有必要对每个算法都上机测试,只需知道哪个算法花费的时间多,哪个算法花费的时间少就可以了。...

    2017-03-12 11:14
    158
  • Java排序算法之堆排序

    堆 堆定义 二叉树的每个节点都大于等于它的两个子节点(堆有序)–大顶堆。 - 小顶堆:每个节点小于等于其子节点。 - 根节点是堆有序的二叉树中最大(或最小)的节点。 二叉堆表示 ...

    2017-03-13 18:13
    151
  • Java排序算法之快速排序

    快速排序思想 按照a[lo] 的值v切分,指针i和j相遇时主循环退出; a[i]小于v时,i+1 a[j]大于v时,j-1 交换a[i], a[j] 保证 i 左侧均小于等于v,...

    2017-03-13 19:38
    147
  • Java排序算法之归并排序

    归并排序的思想 基于分治的思想,将数组分为两个数组,分别排序,将有序的子数组归并到整个数组排序 适用于稳定性高,空间复杂度要求不苛刻的情况 时间复杂度O(nlog(n)) Java实现...

    2017-03-13 20:27
    238
  • Java排序算法之希尔排序

    算法思想 分组插入排序:将序列划分为子序列,分别进行直接插入排序,再缩减增量进行排序。 基于插入排序 算法时间复杂度nlogn,空间复杂度1 适用于大型数组 Java实现impo...

    2017-03-14 19:07
    176
  • Java排序算法之插入排序

    算法思想 每次从无序表中取出第一个元素,插入到有序表的合适位置 适合部分有序的数组或者小规模数组 时间复杂度n^2, 空间复杂度 1 Java实现import java.util.Ar...

    2017-03-14 19:12
    195
  • Java排序算法之选择排序

    算法思想 选出最小的,与第一个交换 冒泡排序是两两比较大的放后面。 时间复杂度n^2, 空间复杂度1 Java实现import java.util.Arrays;public clas...

    2017-03-14 19:17
    143
  • 下压栈:动态数组实现

    栈解释 // 栈是限制插入和删除只能在一个位置上进行的表; // 通过push向栈输入,通过pop和栈顶指针从栈输出; // 栈模型:只有栈顶元素是可访问的。 Java实现packag...

    2017-03-16 09:04
    153
  • 下压栈:链表实现

    下压栈链表实现,主要用到了单链表头部添加和头部删除两个内容。 根据栈的特性:后进先出。打印必须逆序打印JAVA实现import java.util.Iterator;/** * 下压堆栈 * ...

    2017-03-16 09:27
    172
  • 队列:链表实现

    链表队列队列原则:先进先出 主要用到了单链表的头部删除和尾部添加两个内容Java实现import java.util.Iterator;public class Queue implements I...

    2017-03-16 10:27
    322
  • 队列:循环队列Java实现

    循环队列原理Java实现public class CircleQueue { private static final int LENGTH = 4; private Item[] a...

    2017-03-16 11:08
    228
  • 链表:单链表反转超详解

    解法一 思想: 每轮迭代,从原链表中提取结点srcFirst,并将它插入到逆链表的开头。 过程中一直保证 srcFirst是指向原链表中所有剩余结点的首结点, destFi...

    2017-03-17 22:20
    248
  • 链表:自定义双链表总结

    双链表每个节点都有两个链prev和 next,所以相对于单链表在某些功能的实现上更简单一些。Java实现import java.util.Iterator; import java.util.NoSu...

    2017-03-18 15:30
    292
  • 链表:自定义单链表总结

    单链表实现主要实现有: 1 获取首尾元素 2 是否包含某元素 3.1 尾部添加 3.2 头部添加 3.3 某节点后插入 3.4 某节点前插入 4.1...

    2017-03-18 10:35
    230
  • 查找:链表顺序查找和有序数组二分查找

    符号表符号表是一种存储键值对的数据结构,支持两种操作:插入(put)和查找(get)。 可以分为无序符号表和有序符号表。本节的实现基于 每个键只对应着一个值,表不允许存在重复的键 向表中存...

    2017-03-17 11:07
    228
  • 查找:二叉查找树总结

    二叉树查找树 一棵二叉查找树(BST)是一棵二叉树,其中每个节点都含有一个Comparable的键(以及相关的值),且每个节点的键都大于其左子树中的任意节点的键key,而小于右子树的任意节点的键k...

    2017-03-20 19:49
    176
  • 平衡二叉树(AVL)代码笔记

    一棵AVL树是其每个节点的左子树和右子树的高度最多差1的二叉查找树(空树的高度定义为-1)。 重点在于: 插入和删除可能破坏AVL树的平衡特性,需要进行平衡 分为四种情况: 假...

    2017-03-24 12:52
    153
  • 散列表1: 基于分离链接法的散列表

    散列表散列表的实现称为散列(hashing)。只支持二叉查找树的一部分操作,可以以常数平均时间执行插入、删除和查找,对元素间有着排序信息的树操作(如findMin、findMax等)不支持。原理散列表...

    2017-03-26 15:44
    215
  • 散列表2: 基于探测法的散列表

    不用链表的散列表分离链接法的缺点使用了一些链表。给新单元分配地址需要时间,导致算法的速度会有些慢,同时算法还要求对第二种数据结构的实现。 而,不用链表解决冲突的方法是:尝试另外的单元,直到找到空的单...

    2017-03-26 16:42
    224

img博客搬家
img撰写博客
img发布 Chat
img专家申请
img意见反馈
img返回顶部