数据结构与算法

在这里插入图片描述
一、最常用的数据结构预算法:

数据结构:数组、链表、栈、队列、散列表、二叉树、堆、跳表、图、Tire树
算法: 递归、排序、二分查找、搜索、哈希算法、贪心算法、分治算法、回溯算法、动态规划、字符串匹配算法

1.1数据间的关系
逻辑结构:指数据元素之间的相互关系,是我们想象出来的,并没有实质性的将其存储在计算机中

​ 线性结构:线性结构中的数据元素之间是一对一的关系

​ 树形结构:树形结构中的数据元素之间存在一种一对多的层次关系

​ 图形结构:图形结构的数据元素是多对多的关系

物理结构:是指数据的逻辑结构在计算机中的具体存储形式

​ 顺序存储结构:开辟一组连续的空间存储数据通常用数组来实现,数组中空间本身是连续的,保证了数据之间的关系
​ 链式存储结构:开辟一组随机的空间存储数据通常用节点来实现,节点不仅要存储数据还要存储下一个节点的位置以保证数据之间的关系
算法概述
1.2什么是算法:
是解决特定问题的求解步骤的描述,分析问题,求解问题这些步骤就是算法
(1.自然语言描述,2.流程图描述 3.伪代码描述 4.代码描述)

1.3如何评价算法的好坏
1.3.1事后统计法:
​ 这种方法主要时通过设计好的程序与数据,利用计算机计时器对不同算法程序的运行时间惊醒比较,从而确定算法效率的高低。

弊端:

必须事先编写好程序,在进行运行,如程序处理的数据两比较大,则会花费大量的时间和精力

时间的比较主要依赖于计算机硬件功能与软件环境

在算法测试时,若数据量较小时,相差几乎为零,数据量大了,算法的优越性就表现出来了,但是会耗费时间。

对于编程语言而言只是实现算法的一种工具,对算法本身没有任何影响。

1.3.2事前分析法
​ 这种方法主要是计算机程序编制前,依据统计方法对算法进行估算。
​ 一个高级程序语言编写的程序在计算机上运行时所消耗的时间取决于下列因素:
算法采用的策略、方法(算法好换的根本)
编译产生的代码质量(取决于具体的编程语言)
问题的输入规模
机器执行指令的速度 (硬件的性能)
一个程序的运行时间依赖于算法的好坏和问题的输入规模,所谓问题输入规模是指数据入量的多少

1.4算法的时间复杂度
简单来说就是 算法执行时间的增长率和f(n)的增长率相同,称作算法的渐进时间复杂度。

复杂度分析法则
1)单段代码看高频:比如循环。
2)多段代码取最大:比如一段代码中有单循环和多重循环,那么取多重循环的复杂度。
3)嵌套代码求乘积:比如递归、多重循环等
4)多个规模求加法:比如方法有两个参数控制两个循环的次数,那么这时就取二者复杂度相加。

几种常见时间复杂度实例分析
1)常数阶O(1)
无循环、无递归、与问题输入规模N无关的、逐行执行的代码。

2)线性阶(O(n))
与问题输入规模有关的,主要是 一层循环代码,也有可能会有递归的情况

3&#

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值