归并排序算法的原理如下: 归并排序的时间复杂度:,空间复杂度:,稳定性:稳定
归并排序算法的原理如下: 归并排序的时间复杂度:,空间复杂度:,稳定性:稳定
插入排序算法的原理如下: 插入排序的时间复杂度:,空间复杂度:,稳定性:稳定 把待排序的记录按其值的大小逐个插入到一个已经排好序的有序序列中,直到所有的记录插入完为止,得到一...
选择排序算法的原理如下: 选择排序的时间复杂度:,空间复杂度:,稳定性:不稳定 首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置,然后,再从剩余未排序元素中继续...
冒泡排序算法的原理如下: 冒泡排序的时间复杂度:,空间复杂度:,稳定性:稳定 比较相邻的元素。如果第一个比第二个大,就交换他们两个。 对每一对相邻元素做同样的工作,从开始第一...
递归是一种应用非常广泛的算法(或者编程技巧)。递归求解问题的分解过程,去的过程叫“递”,回来的过程叫“归”。 递归需要满足的三个条件:1. 一个问题的解可以分解为几个子问题的...
用数组实现循环队列,循环队列的难点在于头节点和尾节点的判断,判队列已经满了是通过(tail + 1)% n == head,尾节点加1取余,如果相等说明尾节点和头节点相遇了。
利用数组实现队列的操作,特点是先进先出,设置头坐标和尾坐标。 注意:随着不断的出队和入队,head和tail都会不断的后移,会发现head后移但是不能前移,会导致数组前面有空...
利用数组实现栈的操作,栈的操作是先进后出。
获取单向链表环的连接点 方法:碰撞点到连接点的距离等于头指针到连接点的距离。推导略。
获取单向链表倒数索引处的节点数据 首先声明两个指针,初始都指向头节点,让其中一个指针移动index-1次,此时指针指向index处。如果此时节点为null,说明链表总长度不超...
Java实现两个有序单链表的合并 两个有序链表合并时,首先新建一个链表,存储最终的结果。 分情况讨论合并的方式:1.两个链表循环都没有到头时,如果链表一的值小于链表二的值则将...
Java实现单向链表的环检测 单向链表的环检测,思想是使用一个慢指针和一个快指针,同时从头节点出发,如果有环的话两个指针会相遇,否则不会。
使用Java实现单向链表的翻转 先判断,如果为空链表或者只有一个节点的链表,不需要处理,直接返回。然后,声明当前节点,前向节点和后项节点,先将当前节点的后项节点存起来,因为这...
链表是一种物理存储单元上非连续、非顺序的存储结构,数据元素的逻辑顺序是通过链表中的指针实现的。链表由一系列结点组成,结点可以在运行时动态生成,而且由于没有闲置的内存,因此空间...
数组是一种线性表数据结构。它用一组连续的内存空间,来存储一组具有相同类型的数据。 如何实现随机访问? 因为数组是线性表,连续的内存和相同的数据类型使得随机访问成为了可能,我们...
谈谈强引用、软引用、弱引用、幻象引用有什么区别?具体使用场景是什么? Java中根据对象生命周期的长短,将其分为4类。 1、强引用 特点:我们平常编码new出来的对象都是强引...
谈谈final、finally、finalize有什么不同? final可以用来修饰类、方法、变量,分别有不同的意义 final修饰的class不可以继承扩展,final的变...
使二叉树成为二叉查找树的性质是,对于树中的每个节点X,它的左子树中所有项的值小于X中的项,而它的右子树中所有项的值大于X中的项。
复杂度分析是整个算法学习的精髓,只要掌握它,数据结构和算法的内容基本就掌握了一半。 大O复杂度表示法 大O时间复杂度实际上并不具体表示代码真正的执行时间,而是表示代码执行时间...