数据结构与算法
文章平均质量分 79
qq_43419801
这个作者很懒,什么都没留下…
展开
-
2021-01-25
算法基础—二分算法一、定义二分查找也称折半查找(Binary Search),它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序存储结构,而且表中元素按关键字有序排列。二、查找过程在一个有序序列中,取中间值把序列分成两边,先看中间值,如果中间值小于要查找的值,那么说明目标值一定在右边;如果中间值大于目标值,那么目标值一定在左边;如果中间值等于目标值,那么查找完成。以猜数字游戏为例,小明想一个0-1000的数,小红来猜。小明选的是623为例:小红:大于500吗?小明:yes小原创 2021-01-25 18:54:55 · 1050 阅读 · 0 评论 -
算法学习日记(三)---递归(下)
接递归(一)例题1、上台阶**思路分析:**这是一道将问题分解为规模更小的子问题的问题。首先考虑最简单的情况,如果只有一级楼梯,那么只有一种走法;如果有2级楼梯,那么有两种走法:一种是分两次走,一种是一次走2级;如果有n个楼梯,当n>2时,第一次走就有两种走法:一种是第一次走1级,走法数目等于后面n-1个楼梯走法数目;另一种是第一次走2级,走法数目等于后面n-2个楼梯走法数目,所以n个楼梯的走法数目f(n)=f(n-1)+f(n-2)。不难看出,这是斐波那契数列。使用递归解法:/**原创 2021-01-24 18:37:29 · 85 阅读 · 0 评论 -
2021-01-22
算法学习日记(二)—递归(上)一、基本概念递归,就是在运行的过程中调用自己。一个函数调用其自身,就是递归。二、作用1、代替多重循环2、解决本来就是递归定义的问题3、将问题分解为规模更小的子问题进行求解三、递归过程以下列递归函数为例:public static int Factorial(int n){ if(n == 0) return 1; else return n*Factorial(n-1);}以原创 2021-01-22 15:37:11 · 122 阅读 · 0 评论 -
算法学习日记(一)枚举
一、定义枚举是基于逐个尝试答案的一种问题求解策略二、算法依次遍历每个值,直到找到问题求解答案三、例题1、完美立方确定各个变量的范围:a:[2,N]b:[2,a-1]c:[b,a-1]d:[c,a-1]确定了各个变量的范围,避免了不必要的运算,只需要使用四个for循环,就能求出问题解了,题解代码如下:public class Ex_1 { public static void main(String[] args) { Scanner in = new Sc原创 2021-01-20 12:49:12 · 169 阅读 · 0 评论 -
数据结构与算法 个人学习笔记(二)线性表的链式存储(单链表)
一、单链表(一)、单链表的组成如图所示,链表的可以由不相邻内存的节点组成。每个节点含有数据域和指针域。为了方便管理,加入了头指针,头指针指向链表第一个节点的位置。头指针的数据域无意义,但是也可以用来存储链表的长度之类的数据。最后一个节点的指针指向NULL。(二)、单链表的构成typedef struct Node{ int data; //数据域 struct ...原创 2020-03-07 21:19:39 · 176 阅读 · 0 评论 -
数据结构与算法 个人学习笔记(一)之算法效率的度量方法
一、算法效率的度量方法(事前分析估计方法)(一)算法时间复杂度定义:在进行算法分析时,语句总的循环次数T(n) 是关于问题规模n的函数,进而分析T(n)随n的变化情况并确定数量级。算法的时间复杂度,记作T(n)=O(f(n))。1.推导方法(推导大O阶方法)(1)、用常数1取代运行时间中的所有加法常数。(2)、在修改后的运行次数函数中,只保留最高阶项。(3)、如果最高阶项存在且不是1,...原创 2020-03-06 20:50:43 · 239 阅读 · 0 评论