Data Structure & Algorithm
文章平均质量分 71
。
Duncan.M
这个作者很懒,什么都没留下…
展开
-
数据结构与算法(15)——常用的算法
从零开始学习数据结构与算法(15)——常用的算法1.二分查找算法(非递归)2.分治算法3.动态规划算法(DP)1.二分查找算法(非递归)(1)二分查找法只适用于从有序的数列中进行查找,将数列排序之后再进行查找(2)二分查找法的运行时间为对数时间O(log2n),即查找到需要的目标位置最多只需要log2n步。//二分查找的非递归实现 /** * * @param arr 待查找的数组 默认为升序排列 * @param target 需要查找的数 *原创 2021-07-21 16:50:21 · 156 阅读 · 0 评论 -
数据结构与算法(14)—— 图
从零开始学习数据结构与算法(14)—— 图1.为什么要有图?2.图的表示方式3.图的快速入门案例及代码实现4.图的遍历4.1 图的深度优先搜索(DFS)4.1.1 深度优先遍历算法步骤4.1.2 深度优先遍历代码实现4.2 图的广度优先遍历(BFS)4.2.1 广度优先遍历算法步骤4.2.1 广度优先遍历代码实现5.代码汇总1.为什么要有图?1.线性表局限于一个直接前驱和一个直接后继的关系2.树也只有一个直接前驱也就是父节点3.当我们需要表示多对多的关系时,我们就用到了图图是一种数据结构,其原创 2021-07-19 15:14:59 · 101 阅读 · 0 评论 -
数据结构与算法(13)—— 多路查找树
从零开始学习数据结构与算法(13)—— 多路查找树1.二叉树问题分析2.多叉树2.1 概念2.2 2-3 树3.B树,B+树,B*树1.二叉树问题分析2.多叉树2.1 概念2.2 2-3 树3.B树,B+树,B*树原创 2021-07-16 15:25:07 · 147 阅读 · 0 评论 -
数据结构与算法(12)—— 树结构实际应用(二)
从零开始学习数据结构与算法(11)—— 树结构实际应用(二)1.二叉排序树1.1 基本介绍1.2 二叉排序树的创建及遍历1.3 二叉排序树的删除1.3.1 删除叶子节点1.3.2 删除只有一颗子树的节点1.3.3 删除有两颗子树的节点1.二叉排序树1.1 基本介绍1.2 二叉排序树的创建及遍历//创建节点类class Node{ int value; Node left; Node right; public Node(int value) {原创 2021-07-15 22:39:38 · 256 阅读 · 0 评论 -
数据结构与算法(11)—— 树结构实际应用(一)
从零开始学习数据结构与算法(11)—— 树一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-07-15 14:52:06 · 374 阅读 · 0 评论 -
数据结构与算法(10)—— 树
从零开始学习数据结构与算法(10)—— 树1.为什么需要树这种结构?2.二叉树的概念和常用术语2.1 基本概念2.2 二叉树的概念三级目录1.为什么需要树这种结构?数组存储方式的分析:数组扩容:每次在底层都需要创建新的数组,要将原来的数据拷贝到数组,并插入数据2.二叉树的概念和常用术语2.1 基本概念2.2 二叉树的概念1)树有很多种,每个节点最多只能有两个子节点的一种形式称为二叉树2)二叉树的子节点分为左节点和右节点3)如果该二叉树的叶子节点都在最后一层,并且节点总数=2^n-原创 2021-07-13 19:29:20 · 428 阅读 · 0 评论 -
数据结构与算法(9)—— 哈希表(散列)
从零开始学习数据结构与算法(9)—— 哈希表(散列)1.基本介绍1.基本介绍散列表,是根据关键码值(key—value)而直接进行访问的数据结构。也就是说,它通过把关键码值映射到表中的一个位置来访问记录,以加快查找的速度。这个映射函数叫做散列函数,存放记录的数组叫做散列表。实现方式:数组+链表;数组+二叉树...原创 2021-07-12 19:05:48 · 90 阅读 · 0 评论 -
数据结构与算法(8)——查找算法
从零开始学习数据结构与算法(7)——查找算法1.线性查找2.二分查找3.插值查找4.斐波那契查找算法1.线性查找public static int seqSearch(int[] arr,int value){ //逐一比对发现有相同的值时,返回下标 for (int i = 0;i<arr.length;i++){ if (arr[i] == value){ return i; }原创 2021-07-12 13:35:01 · 164 阅读 · 0 评论 -
数据结构与算法(7)——排序算法
从零开始学习数据结构与算法(7)——排序算法1.冒泡排序2.选择排序3.1.冒泡排序小结:(1). 一共进行数组的大小-1次大的循环(2).每一趟排序的次数在逐渐的减少(3).如果我们发现在某趟排序中,没有发生一次交换,则提前结束冒泡排序(优化)代码实现:public static void bubbleSort(int[] arr){ //冒泡排序,时间复杂度为O(n^2) int temp = 0;//临时变量 boolean flag原创 2021-07-10 16:37:16 · 314 阅读 · 0 评论 -
数据结构与算法(6)——算法的时间复杂度
从零开始学习数据结构与算法(6)——算法的时间复杂度1.时间频度2.时间复杂度3.平均时间复杂度和最坏时间复杂度1.时间频度一个算法花费的时间与算法中语句的执行次数成正比,哪个算法中语句执行次数越多,它花费的时间就多,一个算法中的语句执行次数称为语句频度或时间频度,记为T(n)。2.时间复杂度1.一般情况下,算法中的基本操作语句的重复执行次数是问题规模n的某个函数,用T(n)表示,若有某个辅助函数f(n)使得当n趋近于无穷大时,有T(n)/f(n)的极限值为不等于零的常数,则称f(n)是T(原创 2021-07-06 16:05:22 · 225 阅读 · 0 评论 -
数据结构与算法(5)——递归
数据结构与算法学习笔记(5)——递归一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-07-06 13:31:17 · 180 阅读 · 0 评论 -
数据结构与算法(4)——栈及其相关应用
数据结构与算法学习笔记(5)——栈1.栈的介绍2.栈的代码实现2.1.数组模拟栈的思路分析2.2 链表模拟栈的实现3.栈实现综合计算器1.栈的介绍(1)栈的英文 stack(2)栈是一个先入后出的有序列表(3)栈是限制线性表中元素的插入和删除只能在线性表的同一端进行的一种特殊线性表。允许插入和删除的一端为变化的一端,称为栈顶(Top),另一端为固定的一端,称为栈底(Bottom)(4)根据栈的定义可知,最先放入栈中元素在栈底,最后放入的元素在栈顶,而删除元素则正好相反。(5)出栈(pop)、入原创 2021-07-05 19:29:42 · 256 阅读 · 0 评论 -
数据结构与算法(3)——双向链表、环形链表
数据结构与算法学习笔记(4)——双向链表1.单向链表的缺点分析2.双向链表的遍历3.双向链表的添加4.双向链表的删除5.双向链表的修改6.双向链表按顺序添加1.单向链表的缺点分析(1)查找的方向只能是一个,而双向链表可以向前或向后查找(2)单向链表不能自我删除,需要靠辅助节点,而双向链表可以自我删除class Node{ public int num; public String name; public Node pre; public Node next;原创 2021-07-04 11:12:38 · 421 阅读 · 0 评论 -
数据结构与算法(2)——链表的操作及相关面试题
数据结构与算法学习笔记(2)——链表1.链表(LinkedList)基本特点2.单链表的创建及遍历3.按顺序插入节点4.修改节点5.删除节点1.链表(LinkedList)基本特点1.链表是以节点的方式来存储2.每个节点包含data域,next域:指向下一个节点3.链表的各个节点在内存中不一定是连续存放的4.链表分为带头节点的链表和没有头节点的链表,根据实际的需求来确定2.单链表的创建及遍历public class SingleLinkedListDemo { public sta原创 2021-07-01 15:50:59 · 328 阅读 · 0 评论 -
数据结构与算法(1)——概述、稀疏数组、队列
数据结构与算法(1)——概述一级目录二级目录三级目录一级目录二级目录三级目录原创 2021-06-30 15:17:47 · 113 阅读 · 0 评论