
算法与数据结构
由浅入深,数据与算法堆砌出一个又一个美丽的数字世界
那片海-我要来了
都是爱生活爱学习的人,,来吧
展开
-
算法基础篇 — 归并排序、快排
归并排序、快排归并排序思想实现拓展快排思想实现拓展归并排序思想实现拓展快排思想实现拓展原创 2020-07-05 21:05:53 · 280 阅读 · 0 评论 -
算法基础篇 — 递归
递归什么是递归?递归思想时间复杂度什么是递归?在任何编程中,凡是有一个函数或者方法自己调用自己,并且在具备一定条件后,可以正常退出,那么这就叫递归。递归其实和软件工程中的分治思想有异曲同工之妙。把大问题,拆分成小问题,然后再逐一解决汇总。但是递归往往具备一个特征,就是被拆分子任务的逻辑都是相似的。递归需要开辟栈空间,我之前的文章有写到,栈相当于弹夹,如果你的逻辑有bug,很有可能导致卡壳无法弹出子弹导致StackOverflow。当然,递归不一定是最优解,任何递归都可以不用递归实现程序逻辑,甚至还要优于原创 2020-07-04 22:07:35 · 222 阅读 · 0 评论 -
算法基础篇 — 栈、队列
栈、队列栈实现思路数组实现双向链表实现队列实现思路环形数组实现双向链表实现拓展使用队列实现栈使用栈实现队列包含最小值的栈栈百科:栈作为一种数据结构,是一种只能在一端进行插入和删除操作的特殊线性表。它按照先进后出的原则存储数据,先进入的数据被压入栈底,最后的数据在栈顶,需要读数据的时候从栈顶开始弹出数据(最后一个数据被第一个读出来)。栈具有记忆作用,对栈的插入与删除操作中,不需要改变栈底指针。栈是允许在同一端进行插入和删除操作的特殊线性表。允许进行插入和删除操作的一端称为栈顶(top),另一端为栈底(原创 2020-06-21 11:03:59 · 509 阅读 · 0 评论 -
算法基础篇 — 单向链表、双向链表
单链表与双链表单向链表什么是单向链表?数据结构的实现链表反转实现思路code双链表什么是双向链表?数据结构的实现链表反转实现思路code应用场景单向链表什么是单向链表?如上图,每一个节点单向存储并引用下一个节点,每个节点存放你的对象或者数值,通过头节点就能得到一个链表这就是单向链表的特征。数据结构的实现@Data@AllArgsConstructorpublic static class Node<T> { // 节点数据 T data; // 下一个节点原创 2020-06-20 13:23:25 · 455 阅读 · 0 评论 -
算法基础篇 — 认识算法
算法基础篇 — 认识算法什么是算法?算法中常见的名词时间复杂度空间复杂度对数器数据结构常数项时间什么是算法?引用百度百科的一段话:算法(Algorithm)是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法描述解决问题的策略机制。也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出。如果一个算法有缺陷,或不适合于某个问题,执行这个算法将不会解决这个问题。不同的算法可能用不同的时间、空间或效率来完成同样的任务。一个算法的优劣可以用空间复杂度与时间复杂度来衡量。原创 2020-06-14 18:03:55 · 553 阅读 · 0 评论 -
算法基础篇 — 选择排序
选择排序什么是选择排序?排序逻辑思想实现代码什么是选择排序?选择一个最小数,与剩余的所有数进行比较,并且被选择的数只比较一次。如果被选择的数与其他位置上的数比较最小,则记录。如果该最小的数不在被选择的数的位置上则交换位置,以此类推。也就是(被选择数~N-1)一直比较,直到被选择的数是最后一个位置。排序逻辑思想假设有一个数组arrint[] arr = {5,2,8,3,4,7,9,8}int min = 0;循环遍历选择出第一个最小数。5 > 2 交换位置; min = 2原创 2020-06-14 17:08:37 · 154 阅读 · 0 评论