![](https://img-blog.csdnimg.cn/20200819193513422.jpg?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法与数据结构笔记
学习算法与数据结构相关笔记
程序员小章
我知道的一切都在这了https://blog.csdn.net/weixin_44141495/article/details/108240361
展开
-
这是我见过写的最好的动态规划01背包问题了
这是我见过写的最好的动态规划01背包问题了 链接转载 2020-10-17 22:36:01 · 125 阅读 · 0 评论 -
快速排序,你值得拥有!
Java 快速排序 算法介绍 一种很快的排序和其名字一样 和希尔排序的思想类似,每次排序都是对整体进行相对有序化,着手处理整体的顺序. 将序列分为无数个小序列,最终每个小序列都相对有序 实现步骤 寻找一个基准值,然后比基准值小的放到基准值的左边,比基准值大的放到基准值的右边 执行完上述操作之后,我们以基准值进行分割,将数组分为两部分。 每一个部分都当成一个独立的数组,分别找出基准值,都执行上述操作操作 重复流程直至序列有序 看上去不难不难理解,我们给出一个图例 1.整理序列 如图所示的原创 2020-08-28 00:20:58 · 191 阅读 · 0 评论 -
动态规划算法?一篇带你入门
动态规划基础篇 入门案例 前一段时间在刷力扣,一开始只刷数组相关的题目,还有链表等,后来发现越来越多的算法题并不是逻辑思维能力足够就能做做出来的,依赖于一定的算法基础,比如匹配字符串,虽然暴力算法很好实现肯定有很多的纰漏。好的算法绝对不是代码行数越短越好,比如以下两个代码就是很好的例子。 问题描述: 一只青蛙一次可以跳上1级台阶,也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法。 这道题一看,就会轻易的知道用递归,f(1)=1;f(2)=1;f(n)=f(n-1)+f(n-2); public原创 2020-08-27 15:56:56 · 245 阅读 · 0 评论 -
再见插入排序,我们聊聊希尔排序
插入排序,冒泡排序,选择排序 这是我之前写的链接插入排序,选择排序,冒泡排序,希望你看完这两篇博客可以按照我的标题说的做。 这三种排序最大特点是什么? 那就是逻辑清晰,我们我们很容易理解,也很容易想到,代码量都比较小,那么为什么还有那么多其他的排序算法呢? 算法分析 冒泡排序,选择是双for循环,代码执行次数是外部for循环的i和内部j循环的乘积,时间复杂度是O(n^2); 插入排序,内部是while,虽然有折半操作,但是总的时间复杂度也是O(n^2)范畴。 我们的数学家,科学家们总是能给我们带原创 2020-08-20 12:21:49 · 161 阅读 · 0 评论 -
再见选择排序,我们聊聊插入排序
告别选择排序,咋们聊聊插入排序 这是我之前写的冒冒泡排序的链接选择,希望你看完这两篇博客可以按照我的标题说的做。 选择排序的问题 之前你写选择的时候不是一直在喷冒泡吗?好吧,一个好的广告是拿一个老牌的产品去和新的产品比,然后吊打,比如小米和友商,干翻友商。 每一趟选择排序最多排好两个数字(最大值和最小值),其他数字的顺序并不会发生变化。 无论是多大多小的数据都会拿来比较,假设数组的长度很长,然后有一段区域的值普遍都很小,但是我们寻找最大值都是要进行一遍排序操作。 插入排序思想 我们日常打牌是不是要理一原创 2020-08-20 00:26:50 · 108 阅读 · 0 评论 -
告别冒泡排序,咋们聊聊选择排序
告别冒泡排序,咋们聊聊选择排序 这是我之前写的冒冒泡排序的链接冒泡排序,希望你看完这两篇博客可以按照我的标题说的做。 冒泡排序的问题 在这片博文中我谈到了冒泡排序的一些特性 第一轮交换之后,并不能保证数组是有序的 最大的数字会移动到最后,因为最大的数始终大于其他数字,所以一直会进行交换操作,交换操作是当前位置的数字与后一位进行交换,交换完毕,索引值加一,然后下一次判断时,之前被我们换到后面的数字又要进行判断,这个过程一直重复直至我们的索引值移动到数组的尾部 每次冒泡排序的下标所能到达的最大值是上一次的减1原创 2020-08-19 21:32:30 · 111 阅读 · 0 评论 -
Java算法与数据结构 (测试代码)
数据结构学习笔记 - 测试代码篇 本篇主要提供了测试排序算法的测试方法,没什么技术含量,为我们学习排序算法的一个立一个规范。 文件结构 xxxxSort代表的是对应的排序算法类 SortAlgorithm是所有xxxSort排序算法类都要实现的接口 SortUtils是提供测试方法的静态工具类 Test是测试排序算法的测试类 [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-q6vGEwkK-1597838924135)(C:\Users\Faker\Desktop\1223原创 2020-08-19 20:09:14 · 409 阅读 · 1 评论 -
是个人都看得懂的冒泡排序
冒泡排序 算法思想 冒泡排序属于一种典型的交换排序。 交换排序顾名思义就是通过元素的两两比较,判断是否符合要求,如过不符合就交换位置来达到排序的目的。冒泡排序名字的由来就是因为在交换过程中,类似水冒泡,小(大)的元素经过不断的交换由水底慢慢的浮到水的顶端。 冒泡排序的思想就是利用的比较交换,利用循环将第 i 小或者大的元素归位,归位操作利用的是对 n 个元素中相邻的两个进行比较,如果顺序正确就不交换,如果顺序错误就进行位置的交换。通过重复的循环访问数组,直到没有可以交换的元素,那么整个排序就已经完成了。 算原创 2020-08-18 22:58:30 · 586 阅读 · 0 评论