数据结构与算法
Baymax_wyl
你不努力,没人会给你想要的生活。
展开
-
二叉查找树--删除结点——参考学习
二叉树查找=--删除节点(JAVA实现)原创 2018-05-17 14:24:09 · 990 阅读 · 1 评论 -
Java面试宝典——如何实现单链表的增删操作
链表增加结点(把新增加的结点放到链表尾部)删除链表中的结点计算链表的长度通过插入排序,实现对链表的排序package linkedlist;/** * @author wyl * @time 2018年7月4日下午4:01:54 */public class MyLinkedList { Node head=null;//链表头的引用 /** * 向链表中插入数据 */ ...原创 2018-07-04 17:06:43 · 228 阅读 · 0 评论 -
Java面试宝典——如何从链表中删除重复的元素
如何从链表中删除重复数据,最易想到的方法就是遍历链表,把遍历到的值存储到一个HashTable中,在遍历过程中,若当前访问的值在HashTable中已经存在,则说明这个数据是重复的,因此可以删除。这种方法的优点是:时间复杂度较低 缺点是:在遍历过程中需要额外的存储空间来保存已经遍历过的值。/** * 从链表中删除重复元素 */ public void de...原创 2018-07-04 17:50:38 · 187 阅读 · 0 评论 -
Java面试宝典——寻找单链表的中间结点
/** * 找单链表的中间结点 * ①用两个指针同时从头开始遍历 * ②一个快指针一次走两步,慢指针一次走一步 * ③快指针先到链表尾部,而慢指针则恰好到链表中部 * 快指针到达尾部时,当链表长度为奇数时,慢指针指向的即是链表中间指针; * 当链表长度为偶数时,慢指针指向的结点和慢指针指向结点的下一个结点都是链表的中间指针 */ public int Searc...原创 2018-07-04 19:36:45 · 238 阅读 · 0 评论 -
Java面试宝典——希尔排序+堆排序
package demos.order;/** * @author wyl * @time 2018年7月12日下午1:43:43 * 希尔排序:即缩小增量排序 * 基本原理: * 先将待排序的数组元素分成多个子序列,使得每个子序列的元素个属性相对较少, * 然后对各个子序列进行直接插入排序, * 待整个序列“基本有序后”,在对所有元素进行一次直接插入排序 */publ...原创 2018-07-12 14:22:35 · 219 阅读 · 0 评论 -
Java面试宝典——栈与队列
栈与队列是在程序设计中被广泛使用的两种重要的线性数据结构,都是在一个特定范围的存储单元中存储的数据。这些数据都可以重新被取出使用,与线性表相比,他们的插入和删除都受到更多的约束和限制,因此又称为“限定性的线性表结构”。栈:后进先出LIFO队列:先进先出FIFO栈的两种实现方式①用数组的方式实现栈package stack;import java.util.Arrays;/** * @a...原创 2018-07-06 10:27:13 · 163 阅读 · 0 评论 -
Java面试宝典——如何用两个栈模拟队列操作
假设使用栈A与栈B模拟队列Q,A为插入栈,B为弹出栈,以实现队列Q。在假设A和B都为空,可以认为栈A提供入队列的功能,栈B提供出队列的功能。要入队,入栈A即可,而弹出队列则需要分两种情况考虑:①若栈B不为空,则直接弹出栈B的数据;②若栈B为空,则依次弹出栈A的数据,放入栈B中,再弹出栈B的数据。package queue;import java.util.Stack;/** * @au...原创 2018-07-06 10:42:31 · 175 阅读 · 0 评论 -
Java面试宝典——如何实现二叉排序树
二叉排序树,又称二叉查找树,它或者是一颗空树,或者是具有以下性质的二叉树:①如果左子树不空,那么左子树上所有结点的值均小于它的根结点的值;②如果右子树不空,那么右子树上所有结点的值均大于它的根结点的值;③左、右子树也分别为二叉排序树package binarytree;/** * @author wyl * @time 2018年7月6日下午4:29:31 */public c...原创 2018-07-06 16:58:07 · 155 阅读 · 0 评论 -
Java面试宝典——选择排序+插入排序+冒泡排序+快速排序+希尔排序
package demos.order;/** * @author wyl * @time 2018年7月9日下午8:30:07 * 选择排序: * 对于给定的一组记录,经过第一轮比较后得到最小的记录, * 然后将该记录与第一个记录的位置进行交换; * 依次比较,直到进行比较的记录只有一个时为止。 */public class SelectOrder { public...原创 2018-07-10 08:12:33 · 133 阅读 · 0 评论 -
Java面试宝典——求二叉树中结点的最大距离
结点的距离:是指这两个结点之间边的个数。一般而言,对二叉树的操作通过递归方法比较容易实现。求最大距离的思想如下:首先,求左子树距根结点的最大距离,记为leftMaxDistance;其次,求右子树距根结点的最大距离,记为rightMaxDistance;那么二叉树中结点的最大距离maxDistance满足maxDistance=leftMaxDistance+rightMaxDistanc...原创 2018-07-09 08:47:19 · 390 阅读 · 0 评论 -
二叉平衡树AVL——Java实现
AVL树中任何节点的两个子树的高度最大差别为1。 AVL树的查找、插入和删除在平均和最坏情况下都是O(logn)。如果在AVL树中插入或删除节点后,使得高度之差大于1。此时,AVL树的平衡状态就被破坏,它就不再是一棵二叉树;为了让它重新维持在一个平衡状态,就需要对其进行旋转处理。学AVL树,重点的地方也就是它的旋转算法。...原创 2018-05-17 16:29:07 · 108 阅读 · 0 评论 -
数据结构与算法——复习总结
数据结构与算法原创 2018-06-03 10:52:24 · 7443 阅读 · 8 评论 -
有序数组的二分查找---查找元素第一次和最后一次出现的位置
package searching;public class BinSearch_first_last { public static void main(String[] args) { // TODO Auto-generated method stub int[] a={3,5,10,10,10,13,13,19,23}; System.out.println(first...原创 2018-05-16 13:18:06 · 4038 阅读 · 0 评论 -
有序数组的二分查找---查找元素第一次和最后一次出现的位置及元素存储
package searching;public class MyBinSearch { public static void main(String[] args) { int[] a={3,5,10,10,10,13,13,19,23}; System.out.println(binSearch(a,19)); System.out.println(InsertToA...原创 2018-05-16 12:36:02 · 1581 阅读 · 0 评论 -
有序数组的二分查找--Java实现
二分查找又称折半查找,它是一种效率较高的查找方法。1、折半查找的算法思想是将数列按有序化(递增或递减)排序,查找过程采用跳跃方式查找,即先以有序数列的中点位置为比较对象,如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找空间缩小一半。他可以明显缩小比较次数,提高查找效率。但是折半查找的先决条件是查找表中的数据元素必须有序。 折半查找的优点是:比较次数...原创 2018-05-16 09:40:59 · 4069 阅读 · 0 评论 -
堆的定义
定义:当一颗二叉树的每个结点都大于等于它的两个子结点时,它被成为堆有序。相应地,在堆有序的二叉树中,每个结点都小于等于它的父结点(如果有的话).命题:根结点是堆有序的二叉树中的最大节点。...原创 2018-05-15 14:41:34 · 4168 阅读 · 0 评论 -
快速排序
1、快速排序:实现简单,适用于各种不同的输入数据且在一般应用中比其他排序算法要快得多。快速排序是一种分治的排序算法。它将一个数组分成两个子数组,将两部分独立排序。2、归并排序和快速排序是互补的。归并排序:将数组分成两个子数组分别排序,并将有序的子数组归并以将整个数组排序;快速排序:当两个子数组都有序时整个数组也就自然有序了。3、快速排序的关键在于切分,这个过程使得数组满足下面三个条件:->对...原创 2018-05-15 11:11:50 · 274 阅读 · 0 评论 -
二叉查找树BST——Java实现
树的基本知识二叉树的知识二叉查找树平衡二叉树红黑树B树、B_树、B+树原创 2018-05-16 14:06:41 · 2319 阅读 · 1 评论 -
数据结构与算法复习——电网考试
计算机算法必须具备【可移植性、确定性、有穷性】三个特性。 从逻辑上可以把数据结构分为【线性结构、非线性结构】两大类。 若某线性表最常用的操作是存取任一指定序号的元素和在最后进行插入和删除运算,则利用【顺序表】存储方式最节省时间。 若某线性表最常用的操作是在最后一个元素之后插入一个元素和删除第一个元素,则采用【仅有尾指针的单循环链表】存储方式最节省时间。 若某性表最常用的操作是在最后一个元素...原创 2018-08-23 10:05:25 · 815 阅读 · 0 评论