第1章 绪论

数据结构包括三方面的内容,即数据的逻辑结构、数据的存储结构和对数据所施加的运算。

1.1 基本术语:

数据、数据元素、数据对象、数据结构、数据类型、抽象数据类型

1.2 数据结构的内容

1.逻辑结构

根据数据元素之间关系的不同特性,通常有下列四种基本结构

(1)集合关系:该结构中的数据元素之间除了同属于一个集合的关系外,无任何其他关系。

(2)线性结构:该结构中的数据元素之间存在着一对一的线性关系。

(3)树形结构:该结构中的数据元素之间存在着一对多的层次关系。

(4)图状结构或网状结构:该结构中的数据元素之间存在着多对多的任意关系。

数据的四种基本逻辑结构可概括为:

线性结构:线性表,栈,队,字符串,队,字符串,数组,广义表

非线性结构:树,图

2.存储结构

数据结构从存储结构上划分为两种:顺序存储、链式存储

索引存储,散列存储

3.运算集合:增、删、查、改

4.数据结构三方面的关系:

线性表是一种逻辑结构,若采用顺序存储方法,可称其为顺序表;若采用链式存储方法,则可称其为链表;若采用散列存储方法,则可称其为散列表。

若对线性表上的插入、删除运算限制在表的一端进行,则该线性表称之为栈;若将插入运算限制在表的一端进行,而删除运算限制在表的另一端进行,则该线性表称之为队列。

1.3 算法描述:

程序=算法+数据结构

1.3.1基本概念

1.算法的定义算法(algorithm)是规则的有限集合,是为了解决特定问题而规定的一系列操作。

2.算法的特性:有限性、确定性、输入、输出、可行性

3.算法设计的要求:正确性、可读性、健壮性、高效率和低存储量

1.3.2算法描述的工具

流程图、自然语言、其它、计算机语言

1.4 算法分析

1.4.1 时间复杂度

1.语句频度

语句频度是指该语句在一个算法中重复执行的次数,一个算法的时间耗费是该算法中所有语句频度之和。

2.时间复杂度

时间复杂度为

T(n)=O(f(n))

数据结构中常用的时间复杂度频率计数有以下7种。

(1)O(1),表示常数型。

(2)O(n),表示线性型。

(3)O(n2),表示平方型。

(4)O(n3),表示立方型。

(5)O(2n),表示指数型。

(6)O(log2n),表示对数型。

(7)O(nlog2n),表示二维型。

3.最坏时间复杂度

1.4.2 空间复杂度

表示为如下形式。S(n)=O(f(n))

本章小结

1.数据结构研究的是数据的表示形式及数据之间的相互关系。从逻辑结构来看,数据结构包括集合、线性结构、非线性结构等。从存储结构来看,数据结构包括顺序存储、链式存储、索引存储和散列存储四种。

2.集合中不存在数据之间的关系;线性结构的数据元素之间存在着一对一的关系;树型结构的数据元素之间存在着一对多的关系;图型结构的数据元素之间存在着多对多的关系。

3.顺序存储相当于C语言中的一维数组存储;链式存储相当于C语言中的链表存储;索引存储也称为索引查找,包括主表和索引表;散列存储也称为数据查找,是用构造函数的方法得到关键字的地址。

4.算法的评价指标首先是正确性,然后是健壮性、可读性、高效率和低存储量。

5.时间复杂度和空间复杂度通常采用数量级的形式来表示,若一个算法的时间复杂度和空间复杂度越优,则算法的执行效率就越高。

三、编程题

1.将n个数按升序输出,并分析它的时间复杂度。

function orderArray($arr) {
    $count = count($arr);
    $temp = 0;
    // 外层控制排序轮次
    for ($i = 0; $i < $count - 1; $i ++) {
        // 内层控制每轮比较次数
        for ($j = 0; $j < $count - 1 - $i; $j ++) {
            if ($arr[$j] > $arr[$j + 1]) {
                $temp = $arr[$j];
                $arr[$j] = $arr[$j + 1];
                $arr[$j + 1] = $temp;
            }
        }
    }
    return $arr;
}

function orderNumber($a1,$a2,$a3,$a4) {
    $arr = array($a1,$a2,$a3,$a4);
    $rs = orderArray($arr);
    echo '<b>'.$rs[0].$rs[1].$rs[2].$rs[3].'</b>';
}
————————————————
原文链接:https://www.cnblogs.com/zdz8207/p/php-order-number.html

2.求10个数中的最大值,并分析它的时间复杂度。

#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<stdlib.h>

int main()
{
	int i,j,MAX=0;
	int arry[10];
	printf("Please input the arry[]:");
	for (i = 0; i < 10; i++)
	{
	   scanf("%d",&arry[i]);
	}
	MAX = arry[0];
	for (j = 1; j < 10; j++)
	{
		if (arry[j]>MAX)
		{
			MAX = arry[j];
		}
	}
	printf("%d\n",MAX);
	system("pause");
	return 0;

}
————————————————
原文链接:https://blog.csdn.net/Python_programer/article/details/85040990

3.求1到10的阶乘之和,并分析它的时间复杂度。

#include<stdio.h>
int main()
{
	double a,b=1,sum=0;
	for(a=1;a<=10;a++)
	{
		b = a*b; /* 原理:1!等于1乘以1,2!等于1!乘以2,3!等于2!乘以3,以此类推 ,10!等于9!乘以10 */ 
		sum = sum+b; /* 依次将1到10的阶乘相加 */ 
	}
	printf("%lf\n",sum);
	return 0;
}
————————————————
原文链接:https://blog.csdn.net/bestGP/article/details/90117013

 

CSDN海神之光上传的代码均可运行,亲测可用,直接替换数据即可,适合小白; 1、代码压缩包内容 主函数:main.m; 调用函数:其他m文件;无需运行 运行结果效果图; 2、代码运行版本 Matlab 2019b或2023b;若运行有误,根据提示修改;若不会,私信博主; 3、运行操作步骤 步骤一:将所有文件放到Matlab的当前文件夹中; 步骤二:双击打开main.m文件; 步骤三:点击运行,等程序运行完得到结果; 4、仿真咨询 如需其他服务,可私信博主或扫描博客文底部QQ名片; 4.1 博客或资源的完整代码提供 4.2 期刊或参考文献复现 4.3 Matlab程序定制 4.4 科研合作 功率谱估计: 故障诊断分析: 雷达通信:雷达LFM、MIMO、成像、定位、干扰、检测、信号分析、脉冲压缩 滤波估计:SOC估计 目标定位:WSN定位、滤波跟踪、目标定位 生物电信号:肌电信号EMG、脑电信号EEG、心电信号ECG 通信系统:DOA估计、编码译码、变分模态分解、管道泄漏、滤波器、数字信号处理+传输+分析+去噪(CEEMDAN)、数字信号调制、误码率、信号估计、DTMF、信号检测识别融合、LEACH协议、信号检测、水声通信 1. EMD(经验模态分解,Empirical Mode Decomposition) 2. TVF-EMD(时变滤波的经验模态分解,Time-Varying Filtered Empirical Mode Decomposition) 3. EEMD(集成经验模态分解,Ensemble Empirical Mode Decomposition) 4. VMD(变分模态分解,Variational Mode Decomposition) 5. CEEMDAN(完全自适应噪声集合经验模态分解,Complementary Ensemble Empirical Mode Decomposition with Adaptive Noise) 6. LMD(局部均值分解,Local Mean Decomposition) 7. RLMD(鲁棒局部均值分解, Robust Local Mean Decomposition) 8. ITD(固有时间尺度分解,Intrinsic Time Decomposition) 9. SVMD(逐次变分模态分解,Sequential Variational Mode Decomposition) 10. ICEEMDAN(改进的完全自适应噪声集合经验模态分解,Improved Complementary Ensemble Empirical Mode Decomposition with Adaptive Noise) 11. FMD(特征模式分解,Feature Mode Decomposition) 12. REMD(鲁棒经验模态分解,Robust Empirical Mode Decomposition) 13. SGMD(辛几何模态分解,Spectral-Grouping-based Mode Decomposition) 14. RLMD(鲁棒局部均值分解,Robust Intrinsic Time Decomposition) 15. ESMD(极点对称模态分解, extreme-point symmetric mode decomposition) 16. CEEMD(互补集合经验模态分解,Complementary Ensemble Empirical Mode Decomposition) 17. SSA(奇异谱分析,Singular Spectrum Analysis) 18. SWD(群分解,Swarm Decomposition) 19. RPSEMD(再生相移正弦辅助经验模态分解,Regenerated Phase-shifted Sinusoids assisted Empirical Mode Decomposition) 20. EWT(经验小波变换,Empirical Wavelet Transform) 21. DWT(离散小波变换,Discraete wavelet transform) 22. TDD(时域分解,Time Domain Decomposition) 23. MODWT(最大重叠离散小波变换,Maximal Overlap Discrete Wavelet Transform) 24. MEMD(多元经验模态分解,Multivariate Empirical Mode Decomposition) 25. MVMD(多元变分模态分解,Multivariate Variational Mode Decomposition)
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值