随笔分类 -  dataStructure&algorithm

二叉查找树
摘要:二叉查找树(二叉搜索树或二叉排序树)是一种数据结构,采用了图的树形结构。数据存储于二叉查找树的各个节点中。每个结点最多有两个子结点,结点中的数字就是存储的数据。 1、性质 二叉查找树有两个性质。第一个是每个结点的值均大于其左子树上任意一个结点的值。比如15、8大于它左子树上任意一个结点的值。第二个是 阅读全文

posted @ 2021-03-14 23:46 Eleanor123 阅读(320) 评论(0) 推荐(0) 编辑

摘要:堆是一种图的树形结构,被用来实现“优先队列”(priority queues)。优先队列是一种数据结构,可以自由添加数据,但是取出的数据时要从最小值开始按顺序取出。在堆的树形结构中,各个顶点称为“node”结点,数据就存储在这些结点中。 结点内的数据就是存储的数据,堆中每个结点有2个子结点。树的形状 阅读全文

posted @ 2021-03-06 17:49 Eleanor123 阅读(192) 评论(0) 推荐(0) 编辑

哈希表
摘要:哈希表这种数据结构可以使数据的查询效率得到提升。哈希表存储的是由键(key)和值(value)组成的数据。比如每个人的性别作为数据存储,键为人名,值为对应的性别。 假设将数据存储在6个箱子里面(长度为6的数组)。比如查询Ally的性别,因为不知道Ally的数据存储在哪个箱子,所以只能从头开始查询。这 阅读全文

posted @ 2021-03-02 22:45 Eleanor123 阅读(115) 评论(0) 推荐(0) 编辑

栈与队列
摘要:1、栈 栈是一种数据呈线性排列的数据结构,在这种结构中,我们只能访问最新添加的数据。往栈中添加数据的时候,新数据被放在最上面。 往栈中添加数据的这个操作叫做“入栈”(push)。 从栈中取数据的操作叫做“出栈”(pop)。 栈这种最后添加的数据最先被取出,是“后进先出”的结构,称为Last In F 阅读全文

posted @ 2021-03-02 21:57 Eleanor123 阅读(147) 评论(0) 推荐(0) 编辑

数组
摘要:数组也是呈线性排列的一种数据结构。在数组中访问数据非常简单,但是添加和删除数据比较耗时间。 a是数组的名字,后面[]中的数字表示该数据是数组中的第几个数据(这个数字是数组的下标,下标从0开始计数)。比如Red就是数组a的第2个数据。 Blue、Yellow、Red作为数据都存储在数组中。 1、存储方 阅读全文

posted @ 2021-02-28 22:38 Eleanor123 阅读(118) 评论(0) 推荐(0) 编辑

链表与数组比较
摘要:在链表和数组中,数据都是线性地排列成一列。链表中访问数据比较复杂,添加和删除数据比较简单;在数据中访问数据比较简单,添加和删除数据比较复杂。 可以根据哪种操作更加频繁来决定使用哪种数据结构。 数据结构类型 访问 添加 删除 链表 慢 快 快 数组 快 慢 慢 阅读全文

posted @ 2021-02-28 22:30 Eleanor123 阅读(147) 评论(0) 推荐(0) 编辑

链表
摘要:链表是数据结构之一,其中的数据呈线性排列。在链表中进行数据的添加和删除都比较方便,就是访问比较耗时间。 1、单链表 Blue、Yellow、Red这3个字符作为数据存储于链表中。每个数据都有一个指针,它指向下一个数据的内存地址。Red是最后一个数据,所以Red的指针不指向任何位置。 链表中的数据一般 阅读全文

posted @ 2021-02-28 22:05 Eleanor123 阅读(85) 评论(0) 推荐(0) 编辑

什么是数据结构
摘要:数据存储在计算机内存中,数据存储于内存时,决定了数据顺序和位置关系的就是“数据结构”。数据结构能决定数据的顺序和位置关系,选择合适的数据结构可以提供内存的利用率。 1、电话簿的数据结构-从上往下顺序添加 假设有1个电话簿,每当得到了新的电话号码就从上往下的顺序记录在电话簿上面。 姓名 电话号码 张三 阅读全文

posted @ 2021-02-28 17:44 Eleanor123 阅读(216) 评论(0) 推荐(0) 编辑

运行时间的计算方法
摘要:1、了解输入数据的量和运行时间的关系 使用相同的算法,输入数据的量不同,运行时间也会不同。比如对10个数字排序和对1000000个数字排序,很容易想到就是后者运行时间更长。实际上会长多少呢?后者是前者的100倍,还是1000000倍?不仅需要理解不同算法在运行时间上的区别,也要了解根据输入数据量的大 阅读全文

posted @ 2021-02-28 17:11 Eleanor123 阅读(1735) 评论(0) 推荐(0) 编辑

如何选择算法
摘要:能够解决排序问题的算法不止选择排序一个。当有多个算法都能解决同一个问题时,应该如何进行选择?在算法的评判上,考量的标准也不相同。 例如简单的算法对于人来说易理解,也容易写成程序,而在运行过程中不需要消耗太多空间资源的算法,就十分适合内存小的计算机。 一般来说,我们最重视的是算法的运行时间,即从输入数 阅读全文

posted @ 2021-02-28 16:49 Eleanor123 阅读(240) 评论(0) 推荐(0) 编辑

算法的设计
摘要:计算机擅长高速执行一些基本命令,但无法执行复杂的命令。“基本命令”指的是“做加法”或者“在指定的内存地址上保存数据”等。 计算机是以这些基本命令的组合为基础运行的,面对复杂的操作,也是通过搭配组合这些基本命令来应对的。比如对n个数字进行排序对计算机就是复杂的操作,如何设计算法来解决这个排序问题,相当 阅读全文

posted @ 2021-02-28 16:25 Eleanor123 阅读(100) 评论(0) 推荐(0) 编辑

算法与程序的区别
摘要:算法就是计算或者解决问题的步骤。可以想象成食谱,要做出特定的料理,就需要遵循上面的食谱步骤。同样,如果想用计算机解决特定问题,就需要遵循算法。特定的问题很多,比如“将随意排列的数字按从小到大的排序重新排列”、“寻找出发点到目的地的最短路径”等等。 食谱和算法的最大区别就是算法是严密的。食谱上经常会出 阅读全文

posted @ 2021-02-28 12:35 Eleanor123 阅读(2587) 评论(0) 推荐(0) 编辑

摘要:堆栈最早是由Alan M.Turing9(艾伦.图灵)于1946年提出的,当时是为了解决子程序的回调和返回。栈是一种后进先出的数据结构,它只能在一端进行删除和插入操作。比如一个盒子的直径只能放一个球,依次放入2、1、3号小球。如果需要拿出2号球就得先取出3号球,再取出1号球,最后才能取出2号球。 栈 阅读全文

posted @ 2021-02-28 11:49 Eleanor123 阅读(117) 评论(0) 推荐(0) 编辑

队列
摘要:队列是一种特殊的线性结构,它只允许在队列的首部(head)进行删除操作,这称为“出队”,而在队列的尾部(tail)进行插入操作,这个称为“入队”。当队列中没有元素时(head=tail),称为空队列。队列遵循“先进先出”(First In First Out)原则。 1 package day10; 阅读全文

posted @ 2021-02-25 22:51 Eleanor123 阅读(92) 评论(0) 推荐(1) 编辑

快速排序
摘要:快速排序是用的比较多的排序算法,比如需要对“6 1 2 7 9 3 4 5 10 8”这几个数进行排序。方法是首先在这个序列中随便找一个数作为基准数。比如找 6 作为基准数, 然后需要将这个序列中所有比基准数 6 大的数放右边,比基准数小的数放 6 的左边,类似如下排列: 初始的状态下数字 6 在序 阅读全文

posted @ 2021-02-15 23:53 Eleanor123 阅读(367) 评论(0) 推荐(0) 编辑

冒泡排序
摘要:冒泡排序的思想是:每次比较两个相邻的元素,如果他们的顺序错误就把他们交换过来。比如需要将12 35 99 18 76这5个数从大到小排序。从大到小排序,意思是越小的越靠后面。 首先比较第1位和第2位的大小,现在第1位是12,第2位是35。12比35小,小的靠后,所以需要交换这两个数的位置,交换后的顺 阅读全文

posted @ 2021-02-15 23:29 Eleanor123 阅读(79) 评论(0) 推荐(0) 编辑

桶排序
摘要:a的班级有5个同学,5个同学分别考了5分、3分、5分、2分和8分,按照从小到大进行排序,排序后的数据是8-5-5-3-2,使用程序让计算机随机输入5个数据然后将5个数从大到小输出。 通过一个一维数组,申请大小为11的数组int a[11]。申请好以后就有了11个变量,编号从a[0]-a[10]。刚开 阅读全文

posted @ 2021-02-15 23:01 Eleanor123 阅读(83) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示