
玩数据结构和算法
傅晨明
毕业于杭州电子科技大学
展开
-
玩数据结构和算法-实现自己的归并排序
文章目录归并排序实现归并排序和插入排序的性能比较归并排序改进再次性能比较自底向上的归并排序两种归并排序的性能比较 归并排序的实现原理和动画可以网上找 归并排序实现 import java.util.*; public class MergeSort { // 我们的算法类不允许产生任何实例 private MergeSort() { } // 将arr[l...mid]和arr[mid+1...r]两部分进行归并 private static void merg原创 2020-08-16 15:35:37 · 366 阅读 · 0 评论 -
玩数据结构和算法-排序算法的工具类
排序的工具类用于生成随机数组和有序数组,生成的数组用于测试排序算法,比较不同排序算法的性能。 package C02_Sorting_Basic.S06_Insertion_Sort_Advance; import java.lang.reflect.Method; import java.lang.Class; import java.util.Random; public class SortTestHelper { // SortTestHelper不允许产生任何实例 priva原创 2020-08-11 13:34:38 · 222 阅读 · 0 评论 -
玩数据结构和算法-实现自己的二分搜索树
文章目录 二分搜索树 Binary Search Tree 二分搜索树是二叉树 二分搜索树的每个节点的值: 大于其左子树的所有节点的值 小于其右子树的所有节点的值 每一棵子树也是二分搜索树 存储的元素必须有可比较性 import java.util.LinkedList; import java.util.Queue; import java.util.Stack; public class BST<E extends Comparable<E>> { pri原创 2020-08-09 16:09:55 · 272 阅读 · 0 评论 -
玩数据结构和算法-实现属于自己的链表
文章目录链表的实现使用链表实现栈带有尾指针的链表:使用链表实现队列 参考: https://blog.youkuaiyun.com/hongxue8888/article/details/107665599 https://blog.youkuaiyun.com/hongxue8888/article/details/107588793 https://blog.youkuaiyun.com/hongxue8888/article/details/107893120 动态数组、栈、队列:底层依托静态数组,靠resize解决固定容量问题 链表原创 2020-08-09 15:44:50 · 215 阅读 · 0 评论 -
玩数据结构和算法-实现属于自己的队列
文章目录1 数组队列2 数组队列的复杂度分析3 循环队列4 数组队列和循环队列的比较5 动态数组的代码 队列也是一种线性结构 相比数组,队列对应的操作是数组的子集 只能从一端(队尾)添加元素,只能从另一端(队首)取出元素 队列是一种先进先出的数据结构:First In First Out(FIFO) 队列需要实现以下方法: public interface Queue<E> { int getSize(); boolean isEmpty(); void enqu原创 2020-08-09 14:53:13 · 193 阅读 · 0 评论 -
数据结构和算法-实现带约束泛型的选择排序法
文章目录1 选择排序的实现思路2 实现选择排序法3 使用带约束的泛型4 选择排序法的复杂度分析4.1 数组生成器4.2 判断数组是否有序5 换个角度实现选择排序法 1 选择排序的实现思路 选择排序法的实现思路如下: 先把最小的拿出来 剩下的,再把最小的拿出来 剩下的,再把最小的拿出来 … 每次选择还没处理的元素里最小的元素 2 实现选择排序法 public class SelectionSort { private SelectionSort(){} public static void原创 2020-08-08 22:18:11 · 333 阅读 · 0 评论 -
玩数据结构和算法-实现属于自己的动态数组
文章目录数据结构概览1 二次封装数组2 向数组中添加元素3 数组中查询元素和修改元素4 包含,搜索和删除5 使用泛型6 动态数组7 resize复杂度分析8 复杂度震荡 数据结构概览 数组,看似是最简单的数据结构,但是,大多数语言为我们提供的都是静态数组,如何封装一个属于我们自己的动态数组,将是讨论的重点。同时,也将探讨泛型,复杂度分析,乃至复杂度的震荡,等相关高级话题。 1 二次封装数组 public class Array { private int[] data; private原创 2020-07-29 16:44:53 · 235 阅读 · 0 评论 -
玩数据结构和算法-实现属于自己的栈
文章目录1 使用数组实现栈1.1 实现动态数组1.2 动态数组的时间复杂度分析1.3 复杂度震荡1.4 使用数组实现栈2 使用链表实现栈2.1 链表的实现2.2 链表的时间复杂度分析2.3 使用链表实现栈 1 使用数组实现栈 1.1 实现动态数组 public class Array<E> { private E[] data; private int size; // 构造函数,传入数组的容量capacity构造Array public Array(int原创 2020-07-26 09:16:04 · 206 阅读 · 0 评论 -
数据结构和算法-线性查找法和测试算法性能
文章目录线性查找法实现测试算法性能 线性查找法实现 public class LinearSearch { private LinearSearch(){} public static <E> int search(E[] data, E target){ for(int i = 0; i < data.length; i ++) if(data[i].equals(target)) return原创 2020-07-25 22:45:23 · 313 阅读 · 0 评论