数据结构与算法
文章平均质量分 82
静看星辰变
我要成为像凯撒一样的男人
展开
-
为什么B+树适合作为索引的结构
前言本文是在讲述什么样的数据结构适合作为索引,以及其适合作为索引的原因。而阅读本文需要对B树和B+树结构有稍微的理解。以及需要对磁盘操作知识有稍微的了解。对于磁盘操作的相关知识,在文章尾部的链接文章中,有详细的介绍。在MySQL中,主要有四种类型的索引,分别为:B-Tree索引,Hash索引,Fulltext索引和R-Tree索引,本文讲的是B-Tree索引。什么是索引索引(Index)是帮助数据库高效获取数据的数据结构。索引是在基于数据库表创建的,它包含一个表中某些列的值以及记录对应的地址转载 2021-03-06 16:02:23 · 321 阅读 · 1 评论 -
动态规划与取余问题——剪绳子
最近刷leetcode刷到一道dp题,如下:剪绳子—1给你一根长度为 n 的绳子,请把绳子剪成整数长度的 m段(m、n都是整数,n>1并且m>1),每段绳子的长度记为 k[0],k[1]...k[m - 1] 。请问 k[0]*k[1]*...*k[m - 1] 可能的最大乘积是多少?例如,当绳子的长度是8时,我们把它剪成长度分别为2、3、3的三段,此时得到的最大乘积是18。示例 1:输入: 2输出: 1解释: 2 = 1 + 1, 1 × 1 = 1示例2:输入..原创 2021-01-21 11:10:40 · 422 阅读 · 0 评论 -
二分查找模板总结
思考来源与移到leetcode题目,剑指 Offer 53 - I. 在排序数组中查找数字 I。统计一个数字在排序数组中出现的次数。示例 1:输入: nums = [5,7,7,8,8,10], target = 8输出: 2示例2:输入: nums = [5,7,7,8,8,10], target = 6输出: 0显然看到排序两个字就是要用二分搜索,思路是查找“最后一个比target小的值的位置”和“第一个比target大的值的位置”,分别记为left和right,那..原创 2021-01-18 15:58:06 · 260 阅读 · 0 评论 -
Java中的Arrays.sort(int[])
Arrays.sort(int[])Arrays.sort(int[])使用的是quicksort+merge sort。使用quicksort:当数组长度比较小(right-left<286),或者数组有序的程度不是很高(见下面代码),使用quicksort。 使用mergesort:当数组长度较长且有序程度较高时,使用。static void sort(int[] a, int left, int right, int[] work, int原创 2020-12-27 17:15:15 · 1162 阅读 · 0 评论 -
红黑树相关面试题
红黑树和平衡二叉树的区别?红黑树是一个二叉查找树,不像平衡二叉树要求所有节点左右子树高度差不超过1,红黑树只要求从一个节点到叶结点的所有路径中,最长路径不超过最短路径的两倍,所以红黑树只追求树的大致平衡。因为对树平衡程度的不同要求,平衡二叉树在插入和删除的过程中会花费比较大的代价来维护树的平衡,所以平衡二叉树不适合插入、删除太多的场景。而红黑树只要求弱平衡,它做到了当插入和删除时,只需最多旋转3次就能实现一定程度的平衡,所以能将查询、插入和删除的时间复杂度维持在对数级别(O(logn))。对红黑原创 2020-08-29 19:25:46 · 2833 阅读 · 0 评论 -
中缀表达式转 前缀、后缀表达式(java)
一、中缀表达式转后缀表达式这里的运算思路跟我代码一样,所以我就直接借鉴的别人的逆波兰表达式又称作后缀表达式,在四则混合运算的程序设计中用到。例如:1+2写成后缀表达式就是12+4+5*(3-2)的后缀表达式就是4532-*+后缀表达式在四则运算中带来了意想不到的方便,在生成过程中自动保持了优先级;生成逆波兰表达式的算法如下:我们首先的用两个栈结构来存储运算符和操作数,在java中有Stack类可以...原创 2018-05-04 15:50:28 · 4017 阅读 · 0 评论 -
n枚硬币找假币(java)
0. 问题描述 n个硬币中有一个假币,外观一样,且不知道轻重,仅用天平称量质量找硬币所在位置,并给出硬币是轻还是重,输出称量次数概要:如上图所示,假设这次共有17枚硬币,其中,第4枚硬币为假币。这里采用减治的思想,每次将硬币分为3组(天平组)+1组(余数组);余数组是将硬币总数除3后的余数数目所组成的一组,余数组的数目可为0至2;天平组是将硬币总数除以3所平均分出的每一组。按此思路,...原创 2018-04-25 16:46:41 · 1768 阅读 · 0 评论 -
0~500之间的10个最大质数;求最大公倍数和最小公约数;因式分解
rt java.util.*;public class CPrograms2 { private static int bag[]= new int[5]; //存储最大价值时的存储策略 private static int maxValue = Integer.MIN_VALUE; public static void main(String[] args) { //Test1;...原创 2018-05-02 13:22:48 · 393 阅读 · 0 评论 -
武汉理工计算机考研复试上机题
一、2014年上机真题(专硕)循环矩阵(第一列和最后一列是相邻的),求该矩阵中最大子矩阵(就是子矩阵中的元素和最大);输入的数据在文件input.txt中读取,输出的结果存入output.txt中;输入数据的格式如下:(中间只能一个空格,否则就不能存入数组中)41 1 0 25 1 -3 12 2 -1 4-7 -8 0 -5package kaoyan;import java.io.*;...原创 2018-04-12 22:36:18 · 3550 阅读 · 0 评论 -
数据结构 关于树的几个证明题及代码实现
一、求二叉树的深度typedef struct BTNode BTNode{ Elemtype data; struct BTNode *lchild,*rchild;} BTNode;int depth(BTNode *T){ if(!T) return 0; int ldepth = depth(T->lchild); int rdepth = depth(T-&...原创 2018-02-21 22:12:19 · 2384 阅读 · 0 评论