
数据结构与算法
手写的从前98
古今之成大事者,不惟有超世之才,亦必有坚韧不拔之志。
展开
-
如何计算时间复杂度?
1、如果运行时间是常数量级,则用常数1表示。2、只保留时间函数中的最高阶项。3、如果最高阶项存在,则省去最高阶项前面的系数。例子:f(n) = 3 + 2n^2 + 5,其中3是常数项,5n是一阶项,2n2是2阶项,在这里也是最高阶项。所以时间复杂度为O(n2)。...原创 2020-06-24 09:52:14 · 237 阅读 · 0 评论 -
数据结构与算法学习记录(六)二叉树
在树结构中,二叉树是最简单的一种形式。在研究树结构时,二叉树是树结构内容中的重点。二叉树的描述相对简单,处理也相对简单,而且更为重要的是任意的树都可以转换成对应的二叉树。因此,二叉树是所有树结构的基础。什么是二叉树二叉树是树结构放入一种特殊形式,它是n个结点的集合,每个结点最多只能有两个子结点。二叉树的子树仍然是二叉树。二叉树的一个结点上对应的两个子树分别称为左子树和右子树。由于子树有左右之分...原创 2020-04-24 08:51:07 · 210 阅读 · 0 评论 -
数据结构与算法学习记录(五)树结构
什么是树结构树结构是一种描述非线性层次关系的数据结构,其中重要的是树的概念。树是n个数据结点的集合,在该集合中包含一个根节点,根节点之下分布着一些互不交叉的子集合,这些子集合是根节点的子树。树结构的基本特征如下1、在一个树结构中,有且仅有一个结点没有直接前驱,这个结点就是树的根结点。2、除根结点外,其余每个结点有且仅有一个直接前驱。3、每个结点可以有任意多个直接后继。另外,一个树结构也可...原创 2020-04-22 22:03:46 · 460 阅读 · 0 评论 -
数据结构与算法学习记录(四)队列结构
什么是队列结构队列结构是从数据的运算来分类的,也就是说队列结构具有特殊的运算规则。而从数据的逻辑结构来看,队列结构其实就是一种线性结构。如果从数据的存储结构来进一步划分,队列结构包括两类。顺序队列结构即使用一组地址连续的内存单元来依次保存队列中的数据。在程序中,可以定义一个指定大小的结构数组作为队列。链式队列结构即使用链表的形式保存队列中各元素的值。在队列结构中允许对两端进行操作,但是...原创 2020-04-22 18:56:15 · 203 阅读 · 0 评论 -
数据结构与算法学习记录(三)栈结构
什么是栈结构栈结构是从数据的运算来分类的,也就是说栈结构具有特殊的运算规则。而从数据的逻辑结构来看,栈结构其实就是一种线性结构。如果从数据的存储结构来进一步划分,栈结构包括两类。顺序栈结构即使用一组地址连续的内存单元依次保存栈中的数据。在程序中,可以定义一个指定大小的结构数组来作为栈,序号为0的元素就是栈底,再定义一个变量top保存栈顶的序号即可。链式栈结构即使用链表形式保存栈中各元素的...原创 2020-04-22 10:06:26 · 178 阅读 · 0 评论 -
数据结构与算法学习记录(三)链表结构
顺序表结构的存储方式存在以下问题:1、在插入或者删除结点时,往往需要移动大量的数据。2、如果表比较大,有时比较难分配足够的连续存储空间,往往导致内存分配失败,而无法存储。链表可以很好的解决顺序表的存储问题。链表结构是一种动态存储分配的结构形式,可以根据需要动态申请所需的内存单元。什么是链表结构1、链表中的每个结点都包括以下内容:1)数据部分: 保存的是该结点的实际数据。2)地址部分:...原创 2020-04-19 21:35:02 · 266 阅读 · 0 评论 -
数据结构与算法学习记录(二)顺序表的结构以及基本操作
1、顺序表的概述顺序表就是按照顺序存储方式存储的线性表,该线性表的结点按照逻辑次序依次存放在计算机的一组连续的存储单元中。由于顺序表示依次存放的,只要知道了该顺序表的首地址及每个数据元素所占用的存储长度,那么就很容易计算出任何一个数据元素的位置。一般的,其中第一个单元的存储地址则为该结点的存储地址,并设顺序表中开始结点a1的存储地址,简称为基址。2、顺序表的基本操作1、准备数据定义在...原创 2020-04-18 21:04:06 · 550 阅读 · 0 评论 -
数据结构与算法学习记录(一)什么是线性表?
一、什么是线性表从逻辑上来看,线性表就是由n(n>=0)个数据元素a1、a2、……an组成的有限序列。这里需要说明如下几点:1、数据元素的个数为n,也称为表的长度,当n=0的时候称为空表。2、如果一个线性表非空,即n>0,则可以简单地记作(a1,a2,a3,…,an)3、数据元素ai(1=<i<=n)表示了各个元素,在不同的场合,其含义也不同。对于一个非空的线性表...原创 2020-04-18 19:24:59 · 441 阅读 · 0 评论 -
数据结构与算法(三)-------- Java实现递归算法求解阶段的问题
package com.wyq.suanfa.san;import java.util.Scanner;/** * 递归算法求解阶乘问题的算法 */public class P3_3 { static long fact(int n){ if(n<=1){ return 1; }else{ ...原创 2020-03-28 17:25:27 · 245 阅读 · 0 评论 -
数据结构与算法(二)-------- Java实现递归算法求解兔子产仔问题
package com.wyq.suanfa.san;import java.util.Scanner;/** * 递推算法求解兔子产仔问题 */public class P3_2 { public static int fibonacci(int n){ int t1,t2; if(n==1||n==2){ retur...原创 2020-03-28 16:54:28 · 274 阅读 · 0 评论 -
数据结构与算法(一)-------- Java实现穷举算法求解鸡兔同笼问题
package com.wyq.suanfa.san;import java.util.Scanner;/** * 穷举算法求解鸡兔同笼问题 */public class P3_1 { static int chichen,habbit; public static int qiongJu(int head,int foot){ int re,i,j;...原创 2020-03-28 16:33:16 · 346 阅读 · 0 评论 -
数据结构(二)--------图的图示
原创 2020-03-28 11:12:00 · 170 阅读 · 0 评论 -
数据结构(一)-------- 树的图示
原创 2020-03-28 11:06:57 · 319 阅读 · 0 评论 -
数据结构与算法--------插入排序
插入排序的代码实现虽然没有冒泡排序和选择排序那么简单粗暴,但它的原理应该是最容易理解的了,因为只要打过扑克牌的人都应该能够秒懂。插入排序是一种最简单直观的排序算法,它的工作原理是通过构建有序序列,对于未排序数据,在已排序序列中从后向前扫描,找到相应位置并插入。插入排序和冒泡排序一样,也有一种优化算法,叫做拆半插入。1. 算法步骤将第一待排序序列第一个元素看做一个有序序列,把第二个元素到最后一...原创 2019-12-21 08:59:21 · 154 阅读 · 0 评论 -
数据结构与算法--------选择排序
选择排序是一种简单直观的排序算法,无论什么数据进去都是 O(n²) 的时间复杂度。所以用到它的时候,数据规模越小越好。唯一的好处可能就是不占用额外的内存空间了吧。1. 算法步骤首先在未排序序列中找到最小(大)元素,存放到排序序列的起始位置再从剩余未排序元素中继续寻找最小(大)元素,然后放到已排序序列的末尾。重复第二步,直到所有元素均排序完毕。2. 动图演示3、java代码实现...原创 2019-12-20 16:58:57 · 125 阅读 · 0 评论 -
数据结构与算法--------冒泡排序
冒泡排序(Bubble Sort)也是一种简单直观的排序算法。它重复地走访过要排序的数列,一次比较两个元素,如果他们的顺序错误就把他们交换过来。走访数列的工作是重复地进行直到没有再需要交换,也就是说该数列已经排序完成。这个算法的名字由来是因为越小的元素会经由交换慢慢“浮”到数列的顶端。作为最简单的排序算法之一,冒泡排序给我的感觉就像 Abandon 在单词书里出现的感觉一样,每次都在第一页第一位...原创 2019-12-20 16:48:26 · 137 阅读 · 0 评论