![](https://img-blog.csdnimg.cn/20201014180756922.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
数据结构与算法
Songcz✨
这个作者很懒,什么都没留下…
展开
-
数据结构与算法Java实现(4)——插入排序
插入排序,是一种稳定的,内部排序方法(快速排序是稳定的)时间复杂度: 最差情况O( n2)最好情况O(n)空间复杂度: O(l)原理通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序在实现上,在从后向前扫描过程中,需要反复把已排序元素逐步向后挪位,为最新元素提供插入空间。代码实现/** * 插入排序 * @author scz * */...转载 2019-05-08 13:23:39 · 99 阅读 · 0 评论 -
数据结构与算法Java实现(5)——树(上)
安装排序算法应该是堆排序,但理解堆排序首先要理解堆,而理解堆便需要理解树。而树内容较多,是一种独特的数据结构,所以单开一片文章记录树。树相比于链表,数组。树,是非线性结构的典型例子,不再是一对一,而变成了一对多,即一个根节点有多个子节点。如图所示一些关于树的基本概念1.图中的结构就像一棵倒过来的树,最顶部的节点A就是根节点 (root 节点),每棵树至多只有一个根节点。2.根节点生出...转载 2019-05-09 09:45:51 · 201 阅读 · 0 评论 -
数据结构与算法Java实现(3)——归并排序
结束了快速排序学习之后,对其分段排序的思想的延续便是归并排序。归并排序是一种稳定的排序算法。时间复杂度:O(nlogn) ,空间复杂度:O(n),是一种典型的空间换时间的算法。原理: 归并排序将待排序的元素序列分成两个长度相等的子序列,为每一个子序列排序,然后再将他们合并成一个子序列。合并两个子序列的过程也就是归并。盗用一张图:代码实现import java.util.Arrays;...转载 2019-05-07 22:55:36 · 113 阅读 · 0 评论 -
数据结构与算法Java实现(1)——冒泡排序
经过阿里的摧残,决定重新学习下数据结构与算法。最近也有和同学聊面试的事,上个月有同学去东软面试,让他手撕算法写个冒泡排序。第一个学的排序算法就是冒泡排序,大一学C语言的时候就是冒泡排序,那就从冒泡排序开始我的学习之旅吧。冒泡排序是一种稳定的,交换排序。原理:比较两个相邻的元素,根据需求,将值大的元素交换至右/左端。思路:依次比较相邻的两个数,将小数放在前面,大数放在后面。(小到大)时间...原创 2019-05-06 23:14:17 · 233 阅读 · 0 评论 -
数据结构与算法Java实现(2)——快速排序
快速排序是一种不稳定的,交换排序。在这里补充下稳定和不稳定的概念。稳定:如果a原本在b前面,而a=b,排序之后a仍然在b的前面;不稳定:如果a原本在b的前面,而a=b,排序之后a可能会出现在b的后面;思路:百度百科说的就还行通过一趟排序将要排序的数据分割成独立的两部分,其中一部分的所有数据都比另外一部分的所有数据都要小,然后再按此方法对这两部分数据分别进行快速排序,整个排序过程可以...原创 2019-05-07 10:53:56 · 143 阅读 · 0 评论 -
数据结构与算法Java实现(6)——树(下)
AVL树AVL树是高度平衡的而二叉树。它的特点是:AVL树中任何节点的两个子树的高度最大差别为1。上面的两张图片,左边的是AVL树,它的任何节点的两个子树的高度差别都<=1;而右边的不是AVL树,因为7的两颗子树的高度相差为2(以2为根节点的树的高度是3,而以8为根节点的树的高度是1)。关于AVL树点击此处。红黑树Java中TreeMap的底层实现就是黑红树。1.性质性质1...转载 2019-05-10 23:05:09 · 135 阅读 · 0 评论 -
剑指Offer——Java实现
1.二维数组中的查找题目描述:在一个二维数组中(每个一维数组的长度相同),每一行都按照从左到右递增的顺序排序,每一列都按照从上到下递增的顺序排序。请完成一个函数,输入这样的一个二维数组和一个整数,判断数组中是否含有该整数。思路1:暴力A,不就二维数组吗,一行一行找就完了,而且还有序每行二分法。public class Solution { public boolean Find(i...转载 2019-05-29 23:20:06 · 192 阅读 · 0 评论