
算法与数据结构
文章平均质量分 93
柃歌
【兰州理工大学计算机与通信学院2019级本科 | 西安电子科技大学人工智能学院2023级硕士】算法是学不明白的,代码是写不出来的,Offer是拿不到手的!学自己所热爱的内容才会坚持记录与分享,梦想远离内卷,永远追寻热爱的一切!
展开
-
【UCB CS 61B SP24】Lecture 35 - Counting Sort, Radix Sort
本文介绍了非比较型排序算法:计数排序与基数排序,其效率优于之前讲过的快速排序、归并排序等比较型排序算法,并用 Java 实现了基数排序算法。原创 2025-03-13 15:00:53 · 653 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 30 & 32 - Merge Sort, Insertion Sort, and Quick Sort
本文详细介绍并用 Java 实现了三种常见的排序算法,分别为归并排序、插入排序和快速排序,同时分析了不同排序算法的特性及其适用场景。原创 2025-03-12 19:37:46 · 1011 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 28 - Tries
本文介绍并用 Java 实现了用于存储字符串的高效数据结构 Trie,Trie 可以在近乎常数的时间复杂度下进行字符串的插入与查询操作,且效率不受单词的数量影响。原创 2025-03-09 23:08:39 · 648 阅读 · 0 评论 -
【UCB CS 61B SP24】 Lecture 25 & 26 - Minimum Spanning Trees & Directed Acyclic Graphs
本文首先介绍了图论中的另一个经典问题:最小生成树(MST),讲解并用 Java 实现了用于求解 MST 的两个经典算法 Prim 与 Kruskal;接着介绍并实现了有向无环图(DAG)与拓扑排序。原创 2025-03-07 20:50:18 · 760 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 24 - Shortest Paths: Dijkstra, Bellman-Ford, SPFA, Floyd
本文详细讲解了用于求解单源最短路问题的 Dijkstra、Bellman-Ford、SPFA 算法以及用于求解多源最短路问题的 Floyd 算法,并使用 Java 逐一实现这些算法。原创 2025-03-06 22:18:44 · 1025 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 22 & 23: Tree and Graph Traversals, DFS, BFS
本文讲解了二叉树的四种遍历方式,以及如何通过前/后序遍历与中序遍历重建出二叉树,接着介绍了新的非线性数据结构:图,详细讲解了图的存储方式与遍历方式,最后使用 Java 基于邻接表的存储方式实现了图与 DFS、BFS 两种遍历方式。原创 2025-03-05 20:15:46 · 881 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 21: Data Structures 5: Priority Queues and Heaps
本文介绍了优先队列与堆,分析了最小堆的插入与删除过程,并用 Java 实现了一个通用类型的最小堆。原创 2025-03-04 20:06:29 · 794 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 19 & 20: Hashing & Hashing II
本文首先介绍了哈希表中的两大关键概念:哈希函数与哈希码,并使用 Java 实现了一个通过链地址法解决哈希冲突的哈希表。原创 2025-03-03 22:22:15 · 978 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 18 - Data Structures 4: Tree Rotation and Red-Black Trees
本文首先介绍了二叉树的旋转操作,接着重点讲解红黑树的工程简化版本:左倾红黑树(LLRB),详细分析了如何在 LLRB 中插入与删除键值,最后回顾并总结了最近这几节关于搜索树课程的内容。原创 2025-03-02 18:58:50 · 921 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 17 - Data Structures 3: B-Trees
本文以 2-3-4 树为例详细讲解了 B 树的概念,逐步分析其操作,并用 Java 实现了标准的多阶 B 树。原创 2025-03-01 15:17:33 · 884 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 16 - Data Structures 2: ADTs, BSTs
本文首先介绍了抽象数据类型与树的概念,接着重点讲解二叉搜索树的定义与操作方式,并用 Java 实现一个标准的二叉搜索树结构。原创 2025-02-26 21:13:31 · 918 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 14 - Data Structures 1: Disjoint Sets
本文介绍并实现了新数据结构并查集(DSU),详细讲解了并查集这一数据结构所能实现的各种操作,以及如何通过路径压缩与按秩合并来大幅优化并查集的效率。原创 2025-02-25 22:40:45 · 645 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 11 - Inheritance 4: Iterators, Object Methods
本文介绍了新数据结构集合(Set)的概念与使用方式,并通过数组手动实现集合,接着介绍了迭代器,使用迭代器我们能够更方便地遍历集合中的元素。原创 2025-02-24 21:33:37 · 677 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 10 - Inheritance 3: Subtype Polymorphism, Comparators, Comparable
本文介绍了 Java 中的 Comparable 与 Comparator 这两个用于对象大小比较的接口,分析了其分别对应的自然排序顺序与自定义排序顺序的区别。原创 2025-02-23 22:14:22 · 338 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 9 - Inheritance 2: Extends, Casting, Higher Order Functions
本文深入讲解了 Java 中的继承,通过继承分别实现了具有旋转功能与记忆所删除元素功能的链表,还介绍了新数据结构栈(Stack)并用数组列表实现一个栈。原创 2025-02-22 17:17:28 · 752 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 8 - Inheritance 1: Interface and Implementation Inheritance
本文介绍了接口的定义以及如何实现接口、并介绍了方法的重写与重载,还深入分析了 Java 编译时的静态类型与运行时的动态类型之间的区别与联系。原创 2025-02-21 19:37:31 · 844 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 7 - Lists 4: Arrays and Lists
本文使用数组实现能够动态扩容且高效索引每个元素的通用类型的列表。原创 2025-02-21 00:26:54 · 980 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 5 - Lists 3: DLLists and Arrays
本文构建了一个双向循环链表、提高其在链表尾部进行插入或删除操作的效率,并使用 Java 的泛型将其优化为通用类型的链表,最后介绍了数组的基本语法。原创 2025-02-20 19:42:49 · 948 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 4 - Lists 2: SLLists
本文重写了上一节课中的单链表,将其重构成更易于用户使用的链表,并实现多种操作链表的方法,如插入、删除操作。原创 2025-02-20 11:17:48 · 561 阅读 · 0 评论 -
【UCB CS 61B SP24】Lecture 3 - Lists 1: References, Recursion, and Lists
本文开坑伯克利 CS 61B(算法与数据结构)2024年春季课程学习笔记,Lecture 1 & Lecture 2 的内容为课程介绍与 Java 基础,因此直接跳过。本文内容为介绍基本数据类型与引用数据类型的区别,以及手动实现整数列表。原创 2025-02-19 20:03:15 · 824 阅读 · 0 评论