
数据结构与算法
纵死侠骨香
一个致力于发布更多更好文章的大四青年。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
JVM————虚拟机的内存分配
一、堆 在虚拟机初始化时创建,初始化对象和成员变量,所有的对象和数组都要在堆上分配 关于堆的分代 堆通常可分为新生代和老年代,新生代包括1个Eden和两个Survivor区,Survivor区又包括from区和to区。 minnor GC from区中的数据会和to区进行复制算法,交换数据,当次数满15次会发生full GC将数据移动到老年区 为什么最大age是15? 因为对象的年...原创 2020-02-27 17:34:47 · 226 阅读 · 0 评论 -
排序算法————直接插入排序
直接插入排序原理 在每进行一趟排序期间,选取待排序列的第一个元素为关键字,按照其关键字的数值大小 插入到已经排好的有序序列的适当位置,直至插入完成。 执行流程 原始序列: 1、取出51,一个数是有序的,所以51是有序序列。 2、插入35。35<51,51向后移动一个位置 3、插入60。60>51,所以不需要移动,直接插入到51的后面 4、插入88。不...原创 2020-04-01 15:02:00 · 755 阅读 · 0 评论 -
排序算法————归并排序
归并排序原理 将两个或两个以上的有序表组合成一个新的有序表。 归并排序举例 原始序列:35 22 65 84 73 90 56 1、将原始序列看成7个子序列,则子序列有序。 子序列1:35 子序列2:22 子序列3:65 子序列4:84 子序列5:73 子序列6:90 子序列7:56 两两合并,形成若干有序二元组: {22,35},{65,84},{...原创 2020-04-01 13:37:59 · 305 阅读 · 0 评论 -
排序算法————堆排序
基本原理 堆可以看成一颗完全二叉树,这课完全二叉树的任何一个非叶节点的值都大于(或不小于)其左右孩子结点的值。 大顶堆:堆顶的元素值最大,并且每棵子树都是一个大顶堆。(降序) 小堆顶:堆顶的元素值最小,并且每棵子树都是一个小顶堆。(升序) 大顶堆排序步骤 原始序列:49 38 65 97 76 13 2749 一、建堆 1、构建原始序列对应的完全二叉树 ...原创 2020-04-01 13:18:51 · 1283 阅读 · 0 评论 -
各排序算法对比
排序算法比较 类别 排序方法 时间复杂度 空间复杂度 稳定性 平均情况 最好情况 最坏情况 插入排序 直接插入 O(n2) O(n) ...原创 2020-03-13 17:01:09 · 146 阅读 · 0 评论 -
刷题————统计1到N以内的质数个数
public class 统计1到N以内的质数个数 { public static int isflag(int x) { int temp = 0; for (int i = 2; i < x; i++) { //flag必须放在第一个for循环内 boolean flag = true; // 判断x是否为质数 for (int j = 2; j &l...原创 2020-03-07 14:10:47 · 663 阅读 · 0 评论 -
刷题————输入一个数n,求小于等于n的全部质数
public class Text { public static void main(String[] args) { Scanner sc = new Scanner(System.in); System.out.println("请输入一个正整数n"); int n = sc.nextInt(); for (int i = 2; i <= n; i++) { ...原创 2020-03-07 14:08:00 · 1668 阅读 · 0 评论 -
时间复杂度
摘抄自: 算法分析神器—时间复杂度 一套图 搞懂“时间复杂度” 目录 一、代码消耗的的时间单位分析 二、什么是时间复杂度? 三、计算时间复杂度? 一、得出运行时间的函数 二、对函数进行简化 四、时间复杂度排行 五、不同时间复杂度举例 1、O(1)...原创 2020-02-17 17:48:02 · 290 阅读 · 0 评论 -
刷题——求斐波那契数列的第n项(迭代)
题目描述 大家都知道斐波那契数列,现在要求输入一个整数n,请你输出斐波那契数列的第n项(从0开始,第0项为0)。 n<=39 1,1,2,3,5,8,13,21.... 迭代解决 public class Solution { public int Fibonacci(int n) { int a = 1; int b = 1; int s...原创 2019-11-29 16:10:24 · 480 阅读 · 0 评论 -
刷题——变态跳台阶(递归与迭代)
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 解题思路 分类讨论 根据青蛙跳的次数进行统计(1......到n次) 发现 1级台阶1种 f(1)=1 2级台阶2种 f(2)=2 3级台阶4种 f(3)=4 4级台阶8种 f(4)=8 分析数据得出结论 f(...原创 2019-11-29 15:30:28 · 434 阅读 · 0 评论 -
数据结构——链表(一)单链表的创建和遍历
1、链表介绍 链表是有序的列表 1)链表是以节点的方式来存储,是链式存储 2)每个节点包含 data 域, next 域:指向下一个节点. 3)如图:发现链表的各个节点不一定是连续存储. 4)链表分带头节点的链表和没有头节点的链表,根据实际的需求来确定 2、链表创建和遍历 package linkedlist; public class LinkedListTest01 { ...原创 2019-11-24 20:36:13 · 590 阅读 · 0 评论 -
JAVA二分查找法两种实现方式
package test2; //二分查找的前提是数组已经拍好了顺序 public class 二分查找 { //递归实现二分查找 public static int twoSearch(int[] arr,int key,int low,int high){ //判断关键字是否在最小索引low和最大索引high之间,并high>low if(key<arr[low...原创 2019-11-23 10:49:41 · 138 阅读 · 0 评论 -
leetcode练习12. 整数转罗马数字
示例1: 输入:3 输出: "III" 示例2: 输入:4 输出: "IV" 示例3: 输入:9 输出: "IX" 示例4: 输入:58 输出: "LVIII" 解释: L = 50, V = 5, III = 3. 示例5: 输入:1994 输出: "MCMXCIV" 解释: M = 1000, CM = 900, XC = 90, IV = 4. 思路...原创 2019-11-06 11:06:45 · 135 阅读 · 0 评论 -
数据结构之JAVA中的树
为什么需要树这种数据结构 1)数组存储方式的分析优点:通过下标方式访问元素,速度快。对于有序数组,还可使用二分查找提高检索速度。缺点:如果要检索具体某个值,或者插入值(按一定顺序)会整体移动,效率较低 [示意图] 2)链式存储方式的分析优点:在一定程度上对数组存储方式有优化(比如:插入一个数值节点,只需要将插入节点,链接到链表中即可, 删除效率也很好)。缺点:在进行检索时,效率仍然较低,比如(...原创 2019-10-27 17:35:04 · 451 阅读 · 0 评论 -
刷题——跳台阶
题目描述 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法(先后次序不同算不同的结果)。 递归解决方案: public class Solution { public int JumpFloor(int target) { if(target<3){ return target; ...原创 2019-10-27 16:20:17 · 128 阅读 · 0 评论 -
刷题——俄罗斯方块
链接:https://www.nowcoder.com/questionTerminal/9407e24a70b04fedba4ab3bd3ae29704?f=discussion 来源:牛客网 小易有一个古老的游戏机,上面有着经典的游戏俄罗斯方块。因为它比较古老,所以规则和一般的俄罗斯方块不同。 荧幕上一共有 n 列,每次都会有一个 1 x 1 的方块随机落下,在同一列中,后落下的方块会叠在先...原创 2019-10-26 22:58:49 · 360 阅读 · 0 评论