Data Structure
文章平均质量分 56
数据结构是计算机科学中一门介于数学、计算机软件和计算机硬件三者之间的核心课程,是计算机科学的重要理论基础,也是软件设计的重要技术基础。
lazy_cat_go
这个作者很懒,什么都没留下…
展开
-
初识希尔排序
希尔排序是插入排序的一种,又称“缩小增量排序”,是插入排序算法的一种更高效的改进版本插入排序存在的效率问题如果已经排序的分组元素为{2,5,7,9,10}未排序的分组元素为{1,8}那么下一个待插入元素为1,我们需要拿着1从后往前,一次和10,9,7,5,2进行位置交换,才能真正完成插入。如果我们要提高效率,就是把1放到更前面的位置,例如直接将1放到2前面,这样可减少交换次数。下面我们来看看希尔排序将数组{9,1,2,57,4,8,6,3,5}正序希尔排序原理1、选定一个增长量,按照增长量h作为数原创 2021-06-18 23:55:14 · 664 阅读 · 2 评论 -
初识插入排序
插入排序的工作方式非常像人们排序一手扑克牌一样,开始时,我们的左手为空并且桌子上的牌面朝下。然后我们每次从桌子上拿走一张牌,并将它插入左手的正确位置。为了找到一张牌的正确位置,我们从右到左将它与已在手中的每张牌进行比较。将数组 {12,11,10,9,8,7,6},正序原理1.把所有的元素分为两组,已经排序的和未排序的2.找到未排序的组中的一个元素,向已经排序的组中进行插入3.倒叙遍历已经排序的元素,一次和带插入的元素进行比较,直到找到一个元素小于等于待插入元素,那么就把待插入元素放到这个位置没原创 2021-06-10 20:29:15 · 186 阅读 · 1 评论 -
初识选择排序
将数组{4,6,8,7,9,2,10,1},正序排列原理1.在每一次遍历过程中,都假定第一个索引处的元素是最小值,和其他索引初的值依次进行比较,如果假定的索引处的值大于其他某个索引初的值,则假其他某个索引初的值为最小值,最后可以找到最小值所得的索引2.交换第一个索引处和最小值所在的索引处的值Selection中包含2个方法,默认正序sort(Comparable[] arr)和自定义顺序sort(T[] arr,Comparator comparator)public class Selecti原创 2021-06-09 23:41:59 · 88 阅读 · 0 评论 -
初识冒泡排序
将{6,5,4,3,2,1}从小到排序冒泡排序原理:1.相邻两个元素做比较,如果前一个元素比后一个元素大,则交换两个元素的位置2.每对相邻的的两个元素做同样的工作,从开始的第一个元素到结尾的最后一个元素,最终最后一个位置的元素就是最大的3.在原数据的基础上,第一次冒泡最大的到最后一位,在第一次冒泡的基础上,也就是6可以不参加运算,第二次冒泡第二大的到倒数第二位在第二次冒泡的基础上,也就是5,6可以不参加运算,第三次冒泡第三大的到倒数第三位在第三次冒泡的基础上,也就是4,5,6可以不参加运算,第原创 2021-06-09 22:42:33 · 134 阅读 · 0 评论 -
为什么二叉树不适合做索引
如果单从算法逻辑上讲,二叉搜索树的查询速度非常快,比较次数也是最少的,但是这有一个前提,就是所有的数据都必须在内存中查找现实问题:磁盘读写速度数据库的索引是存储在磁盘上的,如果数据量不大可以全部装载到磁盘中,如果数据量比较大,无法将所有的数据全部的索引数据一次性装载到内存的,能做是逐一加载每个磁盘页,这里的磁盘页对应着搜索树的节点,如果用二叉搜索树的话情况会非常糟糕举例说明从高度为4的二叉搜索树中查找值为8的节点首先找到值为9的根节点,8比9小,所以我们要找的节点应该在根节点的左子树中,找到值为原创 2021-06-08 00:02:57 · 549 阅读 · 4 评论 -
初识算法-空间复杂度
计算机的软硬件都经历了一个比较漫长的历史,作为为运行提供环境的内存,从512k 、1M、2M、4M…8G、16G、32G,因此,早期算法在运行过程中对内存占用情况也是一个经常要考虑的问题,我们用算法的空间复杂度来描述算法对内存的占用情况java中常见的内存占用计算机访问内存的方式都是一次一个字节...原创 2021-06-05 17:26:51 · 177 阅读 · 1 评论 -
初识算法-时间复杂度
什么是算法官方解释:算法是指解题方案的准确而完整的描述,是一系列解决问题的清晰指令,算法代表着用系统的方法解决问题的策略机制,也就是说,能够对一定规范的输入,在有限时间内获得所要求的输出大白话根据一定的条件,对一些数据进行计算,得到需要的结果举例1.从东北到北京,可以做火车、汽车、飞机等等交通工具,但是不同交通工具所带来的时间成功和金钱成本是不一样的2.买一套房子,一次性付清还是贷款,所带来的后续生活所带来的压力和首次支付的金额的压力是不一样的。一个优秀的算法追求两个目标1.花最少的时间2原创 2021-06-04 17:46:38 · 867 阅读 · 0 评论 -
数据结构-1
什么是数据结构官方解释:数据结构是一门研究非数值计算的程序设计问题,以及他们之间的关系和操作等想问题的学科大白话:把数据元素按照一定关系组织起来,用来组织和存储数据数据结构的分类1.逻辑结构2.物理结构什么是逻辑结构逻辑结构是从具体问题中抽象出来的模型,是抽象意义上的结构。按照对象中的数据元素之间的相互关系分类。逻辑结构分类集合结构集合结构中数据元素除了属于同一个集合外,他们之间没有任何其他关系线性结构线性结构中数据元素之间存在一对一的关系树形结构树形结构中数据元素之间存在一原创 2021-05-17 14:07:12 · 79 阅读 · 0 评论 -
5叉树插入数据的过程-图解
插入前4个数字3、14、 7、 12.插入8时,n>4,中间元素7向上分裂3.插入5、 11、17不需要分裂4.插入13,中间元素13向上分裂5.插入6 、23 、12 不需要分裂6.插入20,中间元素17上分裂7.插入26、 18、 27不需要分裂8.插入25,中间元素18上分裂...原创 2020-12-30 23:13:33 · 794 阅读 · 1 评论 -
什么是元数据MetaData
元数据是用来描述数据的数据(Data that describes other data)例如去面试的时候hr会拿着一张表格,上面有姓名、性别、民族、年龄。。。等姓名、性别、民族、年龄。。。等元数据用来刻画个人状况...原创 2020-07-06 18:53:38 · 537 阅读 · 0 评论 -
HashMap源码和实现原理
HashMap 的put方法看不懂怎么办1.我为什么看不懂 leave不够 代码功底不够从功能入手 存储键值对 存储数据如果计算机中存储数据该怎么办数据在计算机中的中存储方式,简称数据结构HashMap底层数据结构搞清楚,应该可以看懂常用的数据结构 链表 数组 树形看到这些数据结构如何对号入座数组 ArrayList 图是什么 源码是什么链表 LinkedList 图是什么 源码是什么 双向链表单项双向...原创 2020-05-20 13:33:17 · 194 阅读 · 0 评论 -
常见数据结构之数组和链表
数组数组的定义:存储同一种数据类型的多个元素的容器,有索引数组的特点:查询快,增删慢链表链表的定义:由一条链子把多个结点(由数组和地址组成)连接起来链表链表的特点:查询慢,增删快...原创 2020-05-20 08:32:55 · 190 阅读 · 0 评论 -
常见数据结构之栈和队列
什么是数据结构:数据的组织方式栈:特点:先进后出举例子弹夹:子弹是数据,子弹夹是栈队列特点:先进先出举例:买票原创 2020-04-01 16:55:25 · 145 阅读 · 0 评论 -
什么是算法?为什么要研究算法?
随着互联网的发展,虽然计算机的计算能力每年都在飞快增长,价格也在不断下降。但是我们需要处理的信息量更是呈指数级的增长。对于相同的需求,相同的数据基础,不同的算法,所消耗的时间和计算机空间是不一样的,当然消耗时间越短,空间越小的代码越优秀,下面我们来看一个简单需求(求和1-100 000 0000)的代码实现。 /** * 方式一:求和1-100 000 0000 */...原创 2019-10-10 11:14:27 · 1630 阅读 · 0 评论 -
复利就是将本金按一定利息存入银行,到期将利息计入本金继续存入银行,本利不断增加。如果本金为a ,年利息率为x,n年后可以从银行取出的钱为
第一年得到的钱为a+ax=a(1+x)=a(1+x)^1第二年得到的钱为a(1+x)+a(1+x)x=a(1+x)(1+x)=a(1+x)^2第三年得到的钱为a(1+x)(1+x)+a(1+x)(1+x)x=a(1+x)(1+x)(1+x)=a(1+x)^3...第n年得到的钱为a(1+x)^n...原创 2019-10-09 11:52:07 · 480 阅读 · 0 评论 -
为什么2^0+2^2+2^3+2^4+...+2^63=2^64-1
原创 2019-10-09 11:27:19 · 600 阅读 · 0 评论 -
为什么从1加到n等于n*(n+1)/2
解:令Pn=1+2+3+…+(n-2)+(n-1)+n,Qn=n+(n-1)+(n-2)+…+3+2+1,那么Pn+Qn=(1+n)+(2+(n-1))+(3+(n-2))+…+((n-2)+3)+((n-1)+2)+(n+1)=(n+1)+(n+1)+(n+1)+…+(n+1)+(n+1)+(n+1)=n*(n+1)又Pn=Qn,那么2Pn=n*(n+1),所以Pn=1+2+3...原创 2019-10-09 10:30:56 · 796 阅读 · 0 评论
分享