数据结构
小小人生
这个作者很懒,什么都没留下…
展开
-
算法基础知识图谱整理
下图是个人整理的基础数据结构、排序算法相关的简单图谱,方便后序自己复习;原创 2019-11-13 00:20:23 · 530 阅读 · 0 评论 -
Java判断单链表环单问题
1、如何判断一个单链表是否存在闭环;2、求闭环长度3、求入环节点代码实现:package com.sort.demo;import com.sort.demo.pojo.Node;/** * 关于单链表闭环问题 */public class NodeCycle { /** * 判断是否存在闭环 * <p> * 思路:两个指针...原创 2019-11-13 00:11:59 · 179 阅读 · 0 评论 -
Java实现计数排序
计数排序:利用数组下标来确定元素的正确位置;使用范围:使用一定范围内的整数排序代码实现:package com.sort.demo;import java.util.Arrays;/** * 计数排序 */public class CountSortDemo { public static void sort(int[] arr) { int max ...原创 2019-11-12 23:13:47 · 136 阅读 · 0 评论 -
Java实现堆排序
堆排序基础是最大二叉堆;实现方法:package com.sort.demo;import java.util.Arrays;/** * 堆排序 * <p> * 利用二叉堆堆基础实现 */public class HeapSortDemo { /** * (最大堆)下沉:根节点跟左右节点最大的比较,如果小于最大节点则进行下沉; * ...原创 2019-11-12 00:01:56 · 96 阅读 · 0 评论 -
Java实现快速排序-双边循环与单边循环
快速排序:在每一轮挑选一个基准元素,并让其它比它大的元素移动到一边,小于等于它的元素移动到另一边;思想:分治法基准元素选择:随机选择与选择第一个等元素交换:双边交换与单边交换一、双边遍历交换实现:import java.util.Arrays;/** * 快速排序 */public class FastSortDemo { /** * 双边循环递归 ...原创 2019-11-08 00:56:29 · 573 阅读 · 0 评论 -
Java实现鸡尾酒排序
鸡尾酒排序是基于冒泡排序的一种变种,原理与冒泡排序一样,只是鸡尾酒排序是从左到右 然后从右到左这样的顺序来遍历;冒泡排序一直是按从左到右的顺序来执行;代码实现如下:import java.util.Arrays;/** * 鸡尾酒排序:第一次从左到右,第二次从右到左,第三次从左到右,依次进行..... * <p> * 如果存在 2,3,4,5,6,7,1,8 这种顺序,如...原创 2019-11-07 00:57:50 · 244 阅读 · 0 评论 -
Java实现冒泡排序
冒泡排序:如果该元素大于右侧相邻元素,则进行位置交换;否则保持位置不变;实现代码:import java.util.Arrays;public class BubbleSortDemo { /** * 冒泡排序:如果该元素大于右侧相邻元素,则交换,否则不变; * * 优化:如果发现后面几次都没有交换位置,则不用循环比较;所以增加一个标志来判断是否产生...原创 2019-10-28 21:09:46 · 269 阅读 · 0 评论 -
Java实现最小优先队列Demo
首先,简单了解下优先队列的基础概念,图谱如下:下面是简单利用二叉堆实现最小优先队列的Demo,代码如下:import java.util.Arrays;/** * 最小优先队列 */public class MinPriorityQueue { private int size = 0; private int[] arr; private static f...原创 2019-10-25 09:24:18 · 438 阅读 · 0 评论 -
Java实现二叉堆构建、上浮、下沉
二叉堆分最小堆、最大堆,是优先队列实现的基础 ,下图是我整理的基本的知识图:对于java实现最小二叉堆的下沉、上浮、构建代码例子如下:import java.util.Arrays;/** * 最小二叉堆构建、上浮、下沉的实现Demo */public class BinaryHeapDemo { /** * (最大堆)上浮:跟父节点比较,如果小于父节点,则进行...原创 2019-10-24 22:59:43 · 507 阅读 · 0 评论 -
Java实现二叉树的层序遍历
二叉树实现层序遍历利用队列Queue来实现,主要根据先入先出来实现,代码如下:public static void levelOrderTraveral(TreeNode root) { Queue<TreeNode> queue = new LinkedList<>(); queue.offer(root); while ...原创 2019-10-24 20:11:33 · 2617 阅读 · 0 评论 -
Java实现二叉树的遍历(递归与非递归)
二叉树的遍历分深度递归与广度递归,深度递归主要分为三种:1. 前序遍历2. 中序遍历3. 后序遍历下面是java实现的三种遍历的方式,包括递归实现与栈方式实现(非递归),参考代码如下:import java.util.Arrays;import java.util.LinkedList;import java.util.Stack;public class BinaryTreeD...原创 2019-10-24 09:54:20 · 184 阅读 · 0 评论