
数据结构与算法
文章平均质量分 50
学习各类编程算法,进行总结归纳,提高自主编程能力
奋斗中的小余
一个正在奋斗的大学生。喜欢自学,学习时间大部分都花在b站上。正在往两个方向发展:1.web全栈开发 2.影视动画后期。平时也研究摄影摄像。现在正在不断学习的过程中。非常愿意和一些志同道合的朋友交流。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
数据结构之栈和队列(双向链表及数组实现)
数据结构之栈和队列(双向链表及数组实现) 逻辑概念: 栈:数据先进先出,犹如弹匣 队列:数据先进先出,好似排队 1. 栈和队列的实现(Java) 双向链表实现(对链表不熟悉的可以看我的另一篇文章数据结构之单双向链表): 实现队列(双向): // 双向链表结构 public class DoubleNode { public int value; public DoubleNode pre; public DoubleNode next; public DoubleNode(int原创 2021-12-28 07:30:00 · 347 阅读 · 0 评论 -
算法检验-对数器
算法检验-对数器 实现某种功能的方法,肯定会存在多种实现的思路;当我们进行方法编写的时候,首先会选用最优的算法编写,使性能最大化;最优的算法通常思路比较复杂,光看肉眼检查代码或手动执行看结果检查正确性,往往比较困难且不可靠,这就是对数器要解决的问题。 1. 认识对数器 你想要进行检验的方法a 实现复杂度不好但容易实现的方法b 实现一个随机样本产生器 把方法a和方法b传入生成的数据样本执行,看同一样本得到的结果是否相同 如果有一个随机样本使得比对结果不一致,打印样本进行人工干预,对方法进行改进 当样本数量原创 2021-12-26 23:27:08 · 428 阅读 · 1 评论 -
数据结构之堆结构
数据结构之堆结构 堆结构: 堆结构就是用数组实现的完全二叉树结构,堆结构分为两种:大根堆、小根堆 完全二叉树中如果每棵树的最大值都在顶部就是大根堆 完全二叉树中如果每棵树的最小值都在顶部就是小根堆 图解: 堆结构的实现: 实现思路: 根据二叉树与数组索引的关系可以得出: 根部对应数组的位置为 i :左孩子对应数组位置为2 * i + 1,右孩子对应数组位置为2 * i + 2 孩子对应数组位置为 i ,其根部对应数组位置为(i - 1) / 2并向下取整 大根堆pus原创 2021-12-26 17:40:59 · 417 阅读 · 0 评论 -
数据结构之单向链表与双向链表-简单介绍与练习
数据结构之单向链表与双向链表-简单介绍与练习 1. 单向链表 单向链表中,前一个节点保存着下一个节点的内存地址,下一个节点保存着下下个节点的内存地址,… ,最后一个节点后指向null 单向链表在数据的搜寻过程中,只能按顺序单向执行下去 创建一个单向链表,一般返回的是头部节点,因为利用头部节点可以顺着单向链获得其他所有节点 单向链表节点结构(可实现成泛型): public class Node { public int value; public Node next; public原创 2021-12-25 02:25:04 · 699 阅读 · 0 评论 -
排序算法之归并排序
排序算法之归并排序 1. 常见排序算法的时间复杂度: 时间复杂度为 O(N ^ 2) 的有:选择排序、冒泡排序、插入排序 时间复杂度为 O(N * log N) 的有:归并排序、快速排序 时间复杂度为O(N * log N)的算法比时间复杂度为 O(N ^ 2)的算法好的多 时间复杂度就相当于数组的长度N与执行时间的关系 时间复杂度的表示,按算最坏的情况看,而且忽略常数时间(执行时间确定的时间) 算法的时间复杂度表示相同,它的区别是常数时间不同,但要排序的数组长度很长时,常数时间的影响可以忽略不计 2原创 2021-12-24 23:27:58 · 459 阅读 · 0 评论 -
算法基础-位运算之异或运算-性质及面试题讲解
算法基础-位运算之异或运算-性质及面试题讲解 1. 认识异或运算 两个数在进行异或运算时,可以理解为两个数的二进制对应位上的数向比较,相同为0,不同为1,如:9(1001) ^ 10(1010) = 3(0011) 简单点也可以记为,两个数二进制位上的无进位相加,如:5(101) ^ 6(110) = 3(011) 其中从左到右第1位1+1 忽略进位,此位剩 0,第2位 0 + 1 = 1 不进位,第3位1 + 0 = 1 不进位 结果为 011 异或运算的性质(大家试着用例子去尝试,可以很容原创 2021-12-22 23:49:05 · 582 阅读 · 0 评论 -
位运算符的详细解析及妙用
位运算的符详细解析 1. 按位与(&) 位运算符 “&” 对它的整型操作数逐位执行布尔与(AND)操作。只有两个操作数中相对应的位都是1,结果中的这一位才是1。例如,0b10010 & 0b11001 = 0b10000。 2. 按位或(I) 位运算符 “|” 对它的整型操作数逐位执行布尔或(OR)操作。如果其中一个操作数相应的位为1,或者两个操作数相应位都是1,那么结果中的这一位就为1。例 如:0b10010 & 0b11001 = 0b11011。 3. 按位异或(^)原创 2021-11-24 01:19:20 · 1913 阅读 · 1 评论 -
排序算法之冒泡排序
排序算法之冒泡排序 排序过程: 在arr[0 ~ N-1]范围上(N表示数组长度): arr[0]和arr[1]谁大谁的位置就到1,arr[1]和arr[2]谁大谁的位置就到2,… ,arr[N-2]和arr[N-1]谁大谁位置就在N-1。这样遍历一遍就可以将范围中最大的数放到最后。 在arr[0 ~ N-2]范围上(相对上一步末尾范围-1): 重复上一步的过程,最后一步是arr[N-3]和arr[N-2],谁大谁往后。 … 最后在arr[0~1]的范围上,重复上面的过程,谁大就谁在1的位置原创 2021-12-18 13:47:02 · 1230 阅读 · 0 评论 -
排序算法之插入排序
排序算法之插入排序 排序过程: 让arr[0~1]上有序,所以从arr[1]开始往前看,如果arr[1] < arr[0],就交换。否则什么也不做。 让arr[0~2]上有序,所以从arr[2]开始往前看,如果arr[2] < arr[1],就交换,再判断arr[1]和arr[0]。否则什么也不做。 … 让arr[0~i]上有序,所以从arr[i]开始往前看,arr[i]不断的向左对比和移动,一直移动到左边的数字不再比自己大,停止移动。 算法的复杂程度会因为数据的状况的不同而不同,如你可以比原创 2021-12-18 13:09:54 · 776 阅读 · 0 评论 -
排序算法之快速排序
排序算法之快速排序 1. 一些常见的算法运行时间 下面按从快到慢的顺序列出了你经常会遇到的5种算法运行时间,它们表示运行时间与元素个数的关系。 O(log n),相当于y = log2 n ,也叫对数时间,这样的算法包括二分查找。 O(n),相当于y = n ,也叫线性时间,这样的算法包括简单查找。 O(n * log n),相当于y = n ,这样的算法包括快速排序 —— 一种速度较快的排序算法。 O(n2),相当于y = n * n 这样的算法包括选择排序 —— 一种速度较慢的排序算法。 O(n!)原创 2021-12-13 00:09:12 · 1413 阅读 · 0 评论 -
排序算法之选择排序
选择排序算法 1. 一些常见的算法运行时间 下面按从快到慢的顺序列出了你经常会遇到的5种算法运行时间,它们表示运行时间与元素个数的关系。 O(log n),相当于y = log2 n ,也叫对数时间,这样的算法包括二分查找。 O(n),相当于y = n ,也叫线性时间,这样的算法包括简单查找。 O(n * log n),相当于y = n ,这样的算法包括快速排序 —— 一种速度较快的排序算法。 O(n2),相当于y = n * n 这样的算法包括选择排序 —— 一种速度较慢的排序算法。 O(n!),相当原创 2021-12-10 14:35:49 · 595 阅读 · 0 评论 -
数组和链表的分析与对比
数组和链表的分析与对比 1. 内存的工作原理 计算机就像是很多抽屉的集合体,每个抽屉都有自己的地址。 需要将数据存储到内存时,你请求计算机提供存储空间,计算机给你一个存储地址。需要存储多项数据时,有两种基本方式——数组和链表。但它们并非都适用于所有的情形,因此知道它们的差别很重要。接下来介绍数组和链表以及它们的优缺点。 2. 数组和链表 有时候,需要在内存中存储一系列元素。那么,应使用数组还是链表呢? 使用数组意味着所有元素在内存中都是相连的(紧靠在一起的)。举个例子: ...原创 2021-12-10 13:03:13 · 727 阅读 · 0 评论 -
编程算法之二分法详解(二分不一定要有序)
编程算法之二分查找 二分查找是一种算法,其输入是一个有序的元素列表(必须有序的原因稍后解释)。如果要查找的元素包含在列表中,二分查找返回其位置;否则返回null。 下面的示例说明了二分查找的工作原理: 我随便想一个1~100的数字。 你的目标是以最少的次数猜到这个数字。你每次猜测后,我会说小了、大了或对了。 1. 假设你从1开始依次往上猜,这是简单查找,更准确的说法是傻找。每次猜测都只能排除一个数字。如果我想的数字是99,你得猜99次才能猜到! 2. 下面是一种更佳的猜法。从50 开始。 - 小了,原创 2021-12-08 23:31:56 · 3353 阅读 · 0 评论