![](https://img-blog.csdnimg.cn/20190927151043371.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
算法
简单的算法总结与实现
小萤哥
这个作者很懒,什么都没留下…
展开
-
算法与数据结构-算法篇-堆排序
堆排序快有一个月没有写博客了,还是得把这些东西好好梳理一下,今天写下堆排序的相关内容堆排序和快速排序相比,可能相对会复杂一些,不那么容易理解先给出结论,堆排序和快速排序一样,平均的时间复杂度都是o(N * logN),但是常数项的大小一般要大过快速排序,因此快速排序的速度通常比堆排序更快一 堆结构在开始了解堆排序前,首先需要知道的是,这种算法是基于堆的数据结构设计而来的一种排序算法so,啥是堆咧?堆是一种具备特殊性质的完全二叉树! 那啥又是二叉树,啥又是完全二叉树??1.二叉树二原创 2020-07-18 17:18:02 · 193 阅读 · 0 评论 -
算法与数据结构-算法篇-快速排序
快速排序Java里的Arrays有一个sort()方法,具体的排序细节就是使用快速排序进行的实现,它是一个不稳定的,追求排序速度的排序算法 ,时间复杂度O(N* logN)它与归并的思路有相近之处,都是先保证局部有序,再保证整体有序在引入快速排序前,需要先去引导出两个问题一、如何在一个无序数组里指定一个数K,保证左侧所有数都小于等于K,右侧数都大于K例1,数组[2,1,3,4,5,1,3],k=3,返回 [2,1,1,3,3,4,5]即可例2,数组[2,1,4,2,4,5,3,6],k=6原创 2020-06-16 17:13:21 · 220 阅读 · 0 评论 -
算法与数据结构-算法篇-归并排序
归并排序归并排序,主体思想还是分而治之,将一整块完整的内容拆成几个小块来实现,最后将结果汇总成一个大的结果,就实现了需要的效果归并的玩法就是先拆,拆完保证左边也有序,右边也有序,再想怎么把两个有序数组合并所以归并的问题可以总结为两个问题,一是怎么拆,二是怎么合怎么拆?对于排序来讲,如果只有两个元素,拆为左右各一个元素,那么左右两组的顺序就特别好比较我们将任务拆到一个元素的级别,就能保证左边也有序,右边也有序(废话,自己和自己比,当然有序)怎么合?其实归并算法的难就难在理解合并上,合原创 2020-06-02 23:24:11 · 164 阅读 · 0 评论 -
算法与数据结构-算法篇-插入排序
算法与数据结构-算法篇-插入排序插入排序的思路是在数组内维护出一个有序数组,每次将取到的数按位置进行插入,得到一个排序好的数组这种排序属于不稳定的排序,排序的性能可能会随意数组的结构而产生较大的差异每一次排完序后,都要保证当前索引前面的所有数已经是一个有序数组即可实现方式就是在数组的遍历过程中,索引每偏移一次,都将新的元素向前查找,找到对应的位置放进去,后面的元素后移算法实现步骤开始开始时,索引指向0号位,然后向前看,越界了,比较停止第二步索引后移一步指向了2,2向前比较,发现原创 2020-06-02 22:42:11 · 173 阅读 · 0 评论 -
算法与数据结构-算法篇-选择排序
选择排序既然名为选择,那么排序过程一定不是全部进行排序,而是对选择出来的某项进行了排序1.先将0~N进行遍历,找到最小数的索引,然后将其与0号位交换2.再遍历1~N位置,找到次小数的索引,将其与1号位交换3.遍历2~N位置,找到第三小的数的索引,将其与2号位交换,依次类推图示第一轮比较先将0~4号位的所有数查一下,发现3号位置数最小,将3号位与0号位交换最小值索引号交换结果31 5 2 9 4第二轮比较最小值1已经到了0号位,接下来只看1~4号位,最原创 2020-05-19 00:39:01 · 101 阅读 · 0 评论 -
算法与数据结构-算法篇-冒泡排序
冒泡排序冒泡排序算是比较符合大家直观想象内的一种比较排序方法,也是容易实现的比较算法之一思路,有0~N个无规则排列的数,需要进行排序,那么一、从0循环到原创 2020-05-15 22:27:38 · 238 阅读 · 0 评论