热门标签 | HotTags
当前位置:  开发笔记 > 人工智能 > 正文

数据结构基础知识学习(一)

程序设计数据结构算法基本概念:数据:描述客观事物的符号,是计算机中可以操作的对象,能被计算机识别,并输入给

程序设计 = 数据结构+算法


基本概念:


  • 数据:描述客观事物的符号,是计算机中可以操作的对象,能被计算机识别,并输入给计算机处理的符号的集合。
  • 数据元素:是组成数据的,有一定意义的基本单位,在计算机中通常作为整体处理,也被称为记录。
  • 数据项:一个数据元素可以有若干个数据项组成。数据项是数据不可分割的最小的单位。

数据结构:

概念:相互之间存在一种或者多种特定关系的数据元素的集合。
这里写图片描述

算法:

概念:解决特定问题求解步骤的描述。在计算机中表现为指令的有限序列,每条指令可表示一条或多个操作。

算法的特性:


  • 输入:算法具有零个或者多个输入。
  • 输出:只有一个或多个输出。
  • 有穷性:算法在执行有限的步骤之后,自动结束而不会出现无限循环,并且一个步骤可接受的时间内完成。
  • 确定性:算法的每一步骤都有确定的含义,不会出现二义性。
  • 可行性:算法的每一步都是必须可行的,也就是说,每一步都能够通过执行有限次数完成。

算法分析的分类:


算法存在最好、平均和最坏的情况:


  • 最坏情况:任意输入规模的最大运行次数(上界)这是我们常常关注的情况。
  • 平均情况:任意输入规模的期望运行次数。
  • 最好情况:任意输入规模的最小运行次数,通常最好情况不会出现(下界)

算法的复杂度:时间复杂度和空间复杂度


1、时间复杂度之大O渐进表示法

一个算法语句总的执行次数是关于问题规模N的某个函数,记为f(N),N称为问题的规模。语句总的执行次数记为T(N)当N不断变化时,T(N)也在变化,算法执行次数的增长速率和f(N)的增长速率相同。
则有 T(N)= O(f(N)),称为O(f(N))为时间复杂度的大O渐进表示法。

2、一般算法O(N)的计算方法:


  1. 用常数1取代运行时间中的所有的加法常数。
  2. 在修改后的运行次数函数中,只保留最高阶。
  3. 如果最高阶项系数存在且不是1,则去除与这个项相乘的常数。

时间复杂度典例:

1、二分搜索算法的时间复杂度为O(logN/2)算法中把logN/2=lgN 。。。 M分搜索的算法时间复杂度为logN/M
2、递归算法时间复杂度:递归总次数*每次递归的次数。递归算法的空间复杂度:递归的深度*递归的空间的大小。

空间复杂度:

函数中创建对象的个数关于问题规模函数表达式。一般情况下用O的渐进表示法表示。


推荐阅读
  • 在机器学习领域,深入探讨了概率论与数理统计的基础知识,特别是这些理论在数据挖掘中的应用。文章重点分析了偏差(Bias)与方差(Variance)之间的平衡问题,强调了方差反映了不同训练模型之间的差异,例如在K折交叉验证中,不同模型之间的性能差异显著。此外,还讨论了如何通过优化模型选择和参数调整来有效控制这一平衡,以提高模型的泛化能力。 ... [详细]
  • 题目解析给定 n 个人和 n 种书籍,每个人都有一个包含自己喜好的书籍列表。目标是计算出满足以下条件的分配方案数量:1. 每个人都必须获得他们喜欢的书籍;2. 每本书只能分配给一个人。通过使用深度优先搜索算法,可以系统地探索所有可能的分配组合,确保每个分配方案都符合上述条件。该方法能够有效地处理这类组合优化问题,找到所有可行的解。 ... [详细]
  • 独家解析:深度学习泛化理论的破解之道与应用前景
    本文深入探讨了深度学习泛化理论的关键问题,通过分析现有研究和实践经验,揭示了泛化性能背后的核心机制。文章详细解析了泛化能力的影响因素,并提出了改进模型泛化性能的有效策略。此外,还展望了这些理论在实际应用中的广阔前景,为未来的研究和开发提供了宝贵的参考。 ... [详细]
  • 本文介绍了如何使用Visual Studio Code、Sublime Text等编辑器批量删除MATLAB代码中的注释和空行,同时提供了一些高级技巧以确保代码的整洁。 ... [详细]
  • Python 数据可视化实战指南
    本文详细介绍如何使用 Python 进行数据可视化,涵盖从环境搭建到具体实例的全过程。 ... [详细]
  • 拼多多的崛起之路
    随着4G通信技术的发展,互联网产品从PC端转向移动端,图像传输速度更快、更清晰,智能设备的应用提升了用户体验。移动互联网的普及为拼多多的崛起提供了时代背景。 ... [详细]
  • 结城浩(1963年7月出生),日本资深程序员和技术作家,居住在东京武藏野市。他开发了著名的YukiWiki软件,并在杂志上发表了大量程序入门文章和技术翻译作品。结城浩著有30多本关于编程和数学的书籍,其中许多被翻译成英文和韩文。 ... [详细]
  • 对于众多创业公司而言,选择小程序或小视频的发展方向至关重要。本文将深入分析小程序和小视频的特点、优势及局限,帮助创业者做出更明智的选择。 ... [详细]
  • 基于二次预测的H.264分数像素运动估计算法在这项研究中,提出了一种基于二次预测的H.264分数像素运动估计(ME)算法。这里ÿ ... [详细]
  • 本文介绍了家用计算机和计算器的基本功能和使用方法,通过具体的例子展示了如何利用计算器进行高效的数学计算。文章还探讨了计算工具的发展历史及其未来趋势。 ... [详细]
  • 如何在Linux服务器上配置MySQL和Tomcat的开机自动启动
    在Linux服务器上部署Web项目时,通常需要确保MySQL和Tomcat服务能够随系统启动而自动运行。本文将详细介绍如何在Linux环境中配置MySQL和Tomcat的开机自启动,以确保服务的稳定性和可靠性。通过合理的配置,可以有效避免因服务未启动而导致的项目故障。 ... [详细]
  • 深入解析国内AEB应用:摄像头和毫米波雷达融合技术的现状与前景
    本文作者程建伟,武汉极目智能技术有限公司CEO,入选武汉市“光谷3551人才计划”。文章详细探讨了国内自动紧急制动(AEB)系统中摄像头与毫米波雷达融合技术的现状及未来前景。通过分析当前技术的应用情况、存在的挑战以及潜在的解决方案,作者指出,随着传感器技术的不断进步和算法优化,AEB系统的性能将大幅提升,为交通安全带来显著改善。 ... [详细]
  • 搜索引擎技术概论(上篇):核心原理与应用分析
    搜索引擎技术概论(上篇)探讨了搜索的基本概念及其核心原理。搜索的本质在于信息检索,即用户通过输入关键词,利用特定的算法从海量数据中快速定位并提供所需信息。本文详细分析了搜索引擎的工作机制及其在实际应用中的表现。 ... [详细]
  • 如何优化淘金币推广以提升效果?中小卖家在淘金币频道的制胜之道 ... [详细]
  • 浏览器作为我们日常不可或缺的软件工具,其背后的运作机制却鲜为人知。本文将深入探讨浏览器内核及其版本的演变历程,帮助读者更好地理解这一关键技术组件,揭示其内部运作的奥秘。 ... [详细]
author-avatar
沐月954_290
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有