大话数据结构——算法

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

为什么把数据结构和算法一起说?
想想罗密欧与朱丽叶,梁山伯和祝英台,少了一个你总会觉得奇怪吧。

算法的五个基本特性:

  • 输入:有0个或多个输入;
  • 输出:有1个或多个输出;
  • 有穷性:步骤有限,不能无穷循环下去;
  • 确定性:有确定的含义,不能出现二义性;
  • 可行性:每一步都能通过有限次数完成。

算法设计的要求:

  • 正确性:能正确反映问题,得到问题的正确答案;
  • 可读性:便于阅读、理解和交流;
  • 健壮性:即使输入不合法,算法也能处理,而不是出现异常或中止;
  • 时间效率高和存储量低:像生活中人们所希望的花最少时间,办最大的事。

算法效率的度量方法:

  1. 事后统计法:利用测试好的程序和数据,用计算机测试运行时间判断算法的优劣。这种方法有很大缺陷,必须事先设计好程序,风险大;时间很可能依赖于计算机硬件配置;算法测试的数据选择困难,如数据量大小会影响运行时间。
  2. 事前分析估算法:在程序编制前,进行估算。取决于以下因素:算法采用的策略、方法(算法好坏的根本);编译产生的代码质量(软件);问题的输入规模;机器指令执行的速度(硬件条件)。

算法时间复杂度推导方法:

  1. 用行数1取代运行时间中的所有加法常数;例如,f(n)=1,f(n)=5等的时间复杂度都是O(1),也称为常数街;
  2. 在修改后的运行次数函数中,只保留最高阶的项;
  3. 如果最高阶存在且不是1,则去除与这个项相乘的常数。
    得到的结果就是大O阶。

常见的时间复杂度

常见的时间复杂度所耗费的时间的大小

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/386054.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

java线上培训班学费一般多少,成长路线图

前言 众所皆知的,Linux的核心原型是1991年由托瓦兹(Linus Torvalds)写出来的,但是托瓦兹为何可以写出Linux这个操作系统?为什么它要选择386的计算机来开发?为什么Linux的发展可以这么迅速?又为什么Linux是免费的?以及目前为何有这么多的 Linux版本(…

java线程池使用实战,太牛了!

前言 今天这篇文章中简单介绍一下一个 Java 程序员必知的 Linux 的一些概念以及常见命令。 如果文章有任何需要改善和完善的地方,欢迎在评论区指出,共同进步!笔芯! 正式开始 Linux 之前,简单花一点点篇幅科普一下操作…

大数据基础技术和应用

大数据概述 数据的表现形式: 线下数据信息化:数据库、文字记录、照片……互联网-移动互联网:网页数据、用户行为记录、数字图像……传感器:设备监控、智能家居、摄像头…… 大数据的4V特征: 大量化(Vol…

java线程池参数面试题,附赠复习资料

前言 作为同时具备高性能、高可靠和高可扩展性的典型键值数据库,Redis不仅功能强大,而且稳定,理所当然地成为了大型互联网公司的首选。 众多大厂在招聘的时候,不仅会要求面试者能简单地使用Redis,还要能深入地理解底…

java线程池有几种,讲的太透彻了

前言 该文档在Github上收获40Kstar的Java面试神技(这赞数,质量多高就不用我多说了吧)非常全面,包涵Java基础、Java集合、JavaWeb、Java异常、OOP、IO与NIO、反射、注解、多线程、JVM、MySQL、MongoDB、Spring全家桶、计算机网络、…

HIVE入门

Hive概述 什么是 Hive? * Hive 是建立在 Hadoop HDFS 上的数据库仓库基础建构 * Hive 可以用来进行数据库提取转化加载(ETL) * Hive 定义了简单的类似 SQL 查询语言,称为 HQL,它允许熟悉 SQL 的用户查询数据 * Hi…

java线程面试题博客园,超详细

简介 HikariCP 是用于创建和管理连接,利用“池”的方式复用连接减少资源开销,和其他数据源一样,也具有连接数控制、连接可靠性测试、连接泄露控制、缓存语句等功能,另外,和 druid 一样,HikariCP 也支持监控…

java编写斐波那契数列,实战案例

前言 提到插件,相信大家都知道,插件的存在主要是用来改变或者增强原有的功能,MyBatis中也一样。然而如果我们对MyBatis的工作原理不是很清楚的话,最好不要轻易使用插件,否则的话如果因为使用插件导致了底层工作逻辑被…

java编程代写有哪些平台,学习路线+知识点梳理

前言 今天刚好有空,跟大家聊聊如何学好算法进大厂。 前两天一个读者和我说,他坚持刷算法题2个月,薪资翻番去了他梦寐以求的大厂,期间面字节跳动还遇到了原题…其实据我所知目前国内的大厂和一些独角兽,已经越来越效仿…

【工作感悟】java编程规范pdf下载

前言 要相信,你现在所有的努力和付出都会在将来的某一天回报给你! 首先阿里巴巴作为国内互联网行业的领头羊,培养了一代又一代的IT技术人才,很多想进阿里这些互联网大厂的程序员看中的不仅仅是高薪丰厚的福利待遇,同样…

【工作感悟】全网最经典26道Spring面试题总结

开头 学习如逆水行舟,尤其是IT行业有着日新月异的节奏。 而且现在这个浮躁而又拜金的社会,我相信很多人做技术并非出于热爱,只是被互联网的高薪吸引,毕竟技术岗位非常枯燥,不仅要面对奇奇怪怪的需求,还要…

大话数据结构——树

一、树的定义 树(Tree)是n(n>0)个结点的有限集。 n0又称为空树。在任意一课非空的树中:(1)有且仅有一个特定的称为跟(Root)的结点;(2&#xf…

大话数据结构——图

图(Graph)是由定点的又穷非空集合和顶点之间边的集合组成,通常表示为:G(V,E),其中,G表示一个图,V是图G中顶点的集合,E是图G中边的集合。 一、各种图的定义 …

【工作感悟】达内java大数据课程

前言 其实前几篇文章已经写了好多有关于Spring源码的文章,事实上,很多同学虽然一直在跟着阅读、学习这些Spring的源码教程,但是一直都很迷茫,这些Spring的源码学习,似乎只是为了面试吹逼用,我大概问过一些…

大话数据结构——查找

查找(Searching)是根据给定的某个值,在查找表中确定一个其关键字等于给定值的数据元素(或记录)。 一、顺序表查找 顺序查找又叫线性查找,是最基本的查找技术,它的查找过程是:从表中…

【工作经验分享】java图片转文字

前言 又到一年金九银十之际。 Java作为目前用户最多,使用范围最广的软件开发技术之一。 Java的技术体系主要由支撑Java程序运行的虚拟机,提供各开发领域接口支持的Java,Java编程语言及许多第三方Jvav框架构成。 其中,以Java的虚拟器为今天的着…

【干货】java课程实战培训

开头 消息队列 RocketMQ 是阿里巴巴集团基于高可用分布式集群技术,自主研发的云正式商用的专业消息中间件,既可为分布式应用系统提供异步解耦和削峰填谷的能力,同时也具备互联网应用所需的海量消息堆积、高吞吐、可靠重试等特性,…

【干货】mysql建表语句注释

前言 难道程序员的职业生命线是青春饭?答案是的。 35岁考虑转行,然后35岁又成了一个新人,而外国可以做到60岁,啥也不说了,可能是觉得中年大叔油腻,不及小鲜肉便宜,唉,可叹市场更新…

【干货】mysql查询重复数据sql

前言 本系列的目的是明明白白、彻彻底底的搞定日期/时间处理的几乎所有case。上篇文章铺设所有涉及到的概念解释,例如GMT、UTC、夏令时、时间戳等等,若你还没看过,不仅强烈建议而是强制建议你前往用花5分钟看一下,因为日期时间处…

【微信小程序】java最简单观察者模式

开头 对于一个Java程序员而言,能否熟练掌握并发编程是判断他优秀与否的重要标准之一。因为并发编程是Java语言中最为晦涩的知识点,它涉及操作系统、内存、CPU、编程语言等多方面的基础能力,更为考验一个程序员的内功。 那到底应该怎么学习并…