数据结构与算法
文章平均质量分 57
数据结构与算法
咦940
这个作者很懒,什么都没留下…
展开
-
看了很多01背包问题的资料都没搞懂,那你试试这篇?
的背包,就是为容量为w的背包铺路,我们最终关心的是容量为w的背包。例如:一个物品的价值是-2,但对应的位置依然初始化为0,那么取最大值的时候,就会取0而不是-2了,所以要初始化为负无穷。在推导的时候一定是取价值最大的数,如果题目给的价值都是正整数,那么其他下标都初始化为0就可以了,因为0就是最小的了,不会影响取最大价值的结果。表示从下标为0到i的物品里任意组合,放入容量为j的背包,价值总和的最大值。我们约定,物品i的重量为w[i],物品i的价值为v[i]。将物品0往各种容量的背包里放,能放进去,原创 2023-04-12 16:15:23 · 790 阅读 · 2 评论 -
快速排序Java代码示例
快排、java、sort、partition、枢轴、pivot、时间复杂度、递归、优化原创 2023-02-14 15:14:45 · 864 阅读 · 0 评论 -
串的模式匹配算法
串的模式匹配算法、朴素的模式匹配算法、KMP模式匹配算法、思路、图解、代码示例、时间复杂度、算法的改进原创 2022-10-12 17:28:41 · 727 阅读 · 0 评论 -
散列表(哈希表)概述
散列表、哈希表、Hash Table、散列冲突、哈希冲突、散列函数、哈希函数、直接定址法、数字分析法、平方取中法、折叠法、除留余数法、随机数发、处理冲突的方法、开放定址法、再散列函数法、链地址法、公共溢出区法、散列表查找性能分析原创 2022-09-13 15:46:40 · 1514 阅读 · 0 评论 -
B+树在MySQL InnoDB存储引擎中的应用
多路查找树,2-3树,2-3-4树,B树,B+树,InnoDB存储引擎,聚簇索引,回表,覆盖索引原创 2022-08-24 18:30:05 · 428 阅读 · 0 评论 -
堆排序图解与代码示例
简单选择排序的缺点、堆排序、满二叉树、完全二叉树、堆数据结构、图解、思路、代码示例、时间复杂度、测试用例原创 2022-07-22 15:34:09 · 655 阅读 · 0 评论 -
平衡二叉树(AVL树)图解与代码示例
平衡二叉树、AVL树、AVLTree、插入、删除、insert、delete、左旋、右旋、平衡因子、代码示例、Java、测试用例原创 2022-07-10 20:28:14 · 3574 阅读 · 2 评论 -
希尔排序Java代码示例
希尔排序、测试用例、元素移动次数、直接插入排序、简单插入排序、对比原创 2022-06-08 16:21:32 · 272 阅读 · 0 评论 -
直接插入排序Java代码示例与解析
直接插入排序、时间复杂度、单元测试、正序、逆序、解析原创 2022-06-06 16:01:15 · 119 阅读 · 0 评论 -
斐波那契查找的思路与代码实现
斐波那契查找、思路、图解、代码示例、时间复杂度、单元测试、优劣原创 2022-06-04 14:38:11 · 241 阅读 · 0 评论 -
插值查找的思路与代码示例
插值查找的思路、代码示例、时间复杂度、测试用例、适用场景原创 2022-06-01 22:34:18 · 211 阅读 · 0 评论 -
分别用数组和递归实现斐波那契数列
/** * 用数组实现斐波那契数列(Fibonacci sequence) * @param i 数列下标 * @return 对应的值 */public static int fib(int i) { if (i < 0) { throw new IllegalArgumentException(); } if (i == 0) { return 0; } if (i == 1) { return 1; } int[] arr = new int[i + 1];原创 2021-03-09 14:15:55 · 476 阅读 · 0 评论 -
数据结构基础之逻辑结构与物理结构
逻辑结构逻辑结构是指数据对象中数据元素之间的互相关系。主要有以下四种:集合结构集合结构中的数据元素除了同属于一个集合外,它们之间没有其他关系。线性结构线性结构中数据元素之间是一对一的关系。树形结构树形结构中的数据元素之间存在一种一对多的层级关系。图形结构图形结构的数据元素是多对多的关系。物理结构数据的物理结构又叫存储结构。是指数据的逻辑结构在计算机中的存储形式。数据的存储结构应正确反映数据元素之间的逻辑关系。数据元素的存储结构形式有两种:顺序存储和链式存储。顺序存储结构把数原创 2021-01-04 22:26:19 · 422 阅读 · 0 评论 -
折半查找(二分查找)代码示例
折半查找又叫二分查找,它的前提是线性表中的记录必须是关键码有序(通常是从小到大有序),线性表必须采用顺序存储。/** * 折半查找,也叫二分查找,时间复杂度O(logn) */public class BinarySearch { /** * 从正序数组中查找 * @param arr 数组。必须是正序的 * @param key 要查找的元素 * @return 目标元素的索引 */ public static int searc原创 2020-12-27 16:35:13 · 1859 阅读 · 1 评论 -
冒泡排序代码示例
原始版:/** * 冒泡排序,时间复杂度O(n²) */public class BubbleSort { /** * 正序排序 * @param arr 数组 */ public static void sortAsc(int[] arr) { for (int i = 0; i < arr.length - 1; i++) { for (int j = 0; j < arr.length - i原创 2020-12-27 15:05:29 · 622 阅读 · 0 评论 -
选择排序代码示例
选择排序package org.demo.sort;/** * 选择排序,时间复杂度O(n²) */public class SelectSort { /** * 正序 * @param arr 数组 */ public static void sortAsc(int[] arr) { for (int x = 0; x < arr.length - 1; x++) { for (int y = x +原创 2020-12-27 13:27:02 · 338 阅读 · 0 评论