数据结构:时间复杂度

数据结构介绍、时间复杂度

起源:

	计算机从解决数值计算问题到解决生活中的问题
	现实生活中的问题涉及不同个体间的复杂联系
	需要在计算机程序中描述生活中个体间的联系
	数据结构主要研究非数值计算程序问题中的操作对象以及它们之间的关系 

数据结构的基本概念

数据 : 程序的操作对象,用于描述客观事物
数据的特点:
1、可以输入到计算机
2、可以被计算机程序处理
数据元素:组成数据的基本单位
数据项:一个数据元素由若干数据项组成
数据对象 – 性质相同的数据元素的集合
基本概念

数据结构的逻辑结构:
逻辑结构表示数据元素之间的逻辑关系,它与数据的存储无关,是独立于计算机的
在数据结构中,有四种基本的数据结构
逻辑结构

数据的物理结构

物理结构称为存储结构,是数据的逻辑结构在计算机存储器中的映像,在计算机组成原理中,该映像是计算机系统的硬件和操作系统自动完成的,对程序员是透明的

在这里插入图片描述
顺序存储结构:是通过元素在存储器中的相对位置来表示数据元素间的逻辑关系
链式存储结构:是通过元素存储地址的指针来表示数据元素的关系

数据的运算

概念:在数据的逻辑结构上定义的操作,是在存储结构中实现的
最常用的数据运算有:插入、删除、修改、查找、排序

算法

算法是特定问题求解步骤的描述,算法是独立存在的一种解决问题的方法和思想。高效的程序需要在数据结构的基础上设计和选择算法。
程序=数据结构+算法
数据结构和算法的对比
1、数据结构只是静态的描述了数据元素之间的关系
2、算法是为了解决实际问题而设计的
3、数据结构是算法需要处理的问题载体
4、数据结构与算法相辅相成

特性

输入
算法具有0个或多个输入
输出
算法至少有1个或多个输出
有穷性
算法在有限的步骤之后会自动结束而不会无限循环
确定性
算法中的每一步都有确定的含义,不会出现二义性
可行性
算法的每一步都是可行的
空间复杂度
执行一段程序所占用的最大内存空间
时间复杂度
执行一段程序所占用的时间
误区:
切勿使用绝对时间来衡量算法的效率

大O表示法

算法效率严重依赖于操作(Operation)数量,在判断时首先关注操作数量的最高次项,操作数量的估算可以作为时间复杂度的估算。包括了时间复杂度和空间复杂度

时间复杂度

常见的时间复杂度:
在这里插入图片描述

空间复杂度

算法的空间复杂度通过计算算法的存储空间实现
S(n) = O(f(n))
其中,n为问题规模,f(n))为在问题规模为n,n时所占用存储空间的函数
大O表示法同样适用于算法的空间复杂度,当算法执行时所需要的空间是常数时,空间复杂度为O(1)

关于时间复杂度和空间复杂度
1、多数情况下,算法执行时所用的时间更令人关注
2、如果有必要,会通过增加空间复杂度换取时间复杂度,当然也可以通过时间复杂度降低空间复杂度


关于复杂度的练习(用最小的时间复杂度实现,)

1、实现二分查找算法



2、最大子序列的问题
给定K个整数组成的序列{ N​1​​, N​2​​, ..., N​K​​ },“连续子列”被定义为{ N​i​​, N​i+1​​, ..., N​j​​ },其中 1≤i≤j≤K。“最大子列和”则被定义为所有连续子列元素的和中最大者。例如给定序列{ -2, 11, -4, 13, -5, -2 },其连续子列{ 11, -4, 13 }有最大的和20。现要求你编写程序,计算给定整数序列的最大子列和。

```c
3、Given a sequence of K integers { N​1​​, N​2​​, ..., N​K​​ }. 
A continuous subsequence is defined to be { N​i​​, N​i+1​​, ..., N​j​​ } where 1≤i≤j≤K. The Maximum Subsequence is the continuous subsequence which has the largest sum of its elements.
For example, given sequence { -2, 11, -4, 13, -5, -2 }, its maximum subsequence is { 11, -4, 13 } with the largest sum being 20.

Now you are supposed to find the largest sum, together with the first and the last numbers of the maximum subsequence. 



**下期会有算法的实现源码以及链表的相关知识**


	



	



发布了3 篇原创文章 · 获赞 6 · 访问量 72

猜你喜欢

转载自blog.csdn.net/ClownY/article/details/105197355