![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
算法
ZerahMu
退网转行
展开
-
剑指Offer详细题解 01-10
声明:内容较多, 没耐心的小伙伴先码后看官方C语言题解:https://github.com/zhedahht/CodingInterviewChinese201.赋值运算符这个就不用写了爬02.手写单例直接参考cyc的博客就好:https://github.com/CyC2018/CS-Notes/blob/master/notes/%E8%AE%BE%E8%AE%A1%E6...原创 2019-12-17 13:00:29 · 267 阅读 · 0 评论 -
二分查找思想与实现
思想:二分查找是一种非常高效的算法,又称之为折半查找,顾名思义就是将查找的值和数组的中间值作比较【此处就要求这个数组必须是有序的了】如果被查找的值小于中间值,就在中间值左侧数组继续查找;如果大于中间值,就在中间值右侧数组中查找;否则中间值就是要找的元素。二分查找的优缺点:优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法...原创 2018-10-16 20:47:41 · 3793 阅读 · 0 评论 -
Java实现冒泡排序(一)
原理:每次比较两个相邻的元素,将较大的元素交换至右端。思路:每次冒泡排序操作都会将相邻的两个元素进行比较,看是否满足大小关系要求,如果不满足,就交换这两个相邻元素的次序,一次冒泡至少让一个元素移动到它应该排列的位置,重复N次,就完成了冒泡排序。通过一个图来简单理解一下一次冒泡的过程【注意:图中每一竖列是一次比较交换】: 图中可以看出,经过一次冒泡,6这个当前数组中最大的元素飘到...原创 2018-10-26 14:14:45 · 120888 阅读 · 29 评论 -
Java实现选择排序(二)
原理:每一趟从待排序的记录中选出最小的元素,顺序放在已排好序的序列最后,直到全部记录排序完毕。思路:首先,找到数组中最小的元素,其次,将它和数组的第一个元素交换位置,再次,在剩下的元素中找到最小的元素,将它与数组的第二个元素交换位置,如此往复,直到整个数组排序,每次交换都能排定一个元素,因此交换的总次数是N,所以算法的时间效率取决于比较的次数,交换次数和数组的大小是线性关系。 上图趟排...原创 2018-10-29 20:48:37 · 336 阅读 · 0 评论 -
Java实现插入排序(三)
原理:每一步将一个待排序的记录,插入到前面已经排好序的有序序列中去,直到插完所有元素为止。思想:想必你肯定打过扑克牌吧,在一张一张揭牌的时候,是不是每次揭一张牌将其插入到其他已经有序的牌中的适当位置,如果你没有这个经历,赶紧约一波小伙伴,斗一把。与选择排序一样,把要排序的数据分为已排序区间和未排序序列。初始已排序区间只有一个元素,就是数组的第一个元素,然后取未排序区间中的元素,在已排序区间中找...原创 2018-10-29 21:22:15 · 246 阅读 · 0 评论 -
Java实现快速排序(四)
Java快速排序引言快速排序一定是面试中最常见的算法题了,最近在准备面试,所以再来把快排复习一下,今天更一下大家能百度到的最常见的快排写法,我也是参照其他博客内容自己写了一遍,然后写了下注释,建议要搞懂,还是自己默写一遍,达到手撕快排的水平,这样面试再也不会怂了。当然,要面试BAT等互联网,光会手写快排还是远远不够的,什么快排优化了,复杂度,是否原地排序了,这些都得要搞懂,之后有时间再更...原创 2019-08-20 23:51:29 · 312 阅读 · 0 评论