计算机算法(二)——进入计算机世界

news2024/11/20 23:13:58

作者介绍:

 📞作者:小刘在C站

📀每天分享课堂笔记

🌹夕阳下,是最美的绽放

    瑞士著名的科学家Niklaus Wirth教授曾提出:数据结构+算法=程序。
    数据结构是程序的骨 算法是程序的灵魂。
    在生活中,算法无处不在。每天早上起来,刷牙、洗脸、吃早餐,都在算着时间,以免上班或上课迟到;去超市购物,在资金有限的情况下,考虑先买什么、后买什么,算算是否超额;在家中做饭,用什么食材、调料,具体的烹饪方法和步骤如何,做完了还要品尝一下咸淡,看看是否做熟。所以,不要说你不懂算法其实你每天都在用!

目录

1.妙不可言——算法的复杂性

 “算法的标准如下。

2.一棋盘的麦子

解析

3.神奇的兔子数列

问题分析

4.算法学习瓶颈

6.励志名言

7:计算机算法一


1.妙不可言——算法的复杂性

首先看书上一道例题,写一个算法,求一下序列之和:-1,1,-1,1,...,(-1)

当你看到这个题目时,你好怎么想?for语句? while循环?

看计算机算法1

  再看计算机算法2

 

 看到这段代码后你可能恍然大悟 可以这样啊?这不就是数学家高斯使用的算法吗?

1787年,10岁的高斯用了很短的时间就算出了结果,而其他孩子却要算很长时间。
可以看出,算法1.1需要运行+1次,如果n= 100 00,就要运行100 01次,而算法1-2仅仅需要运行1次!是不是有很大差别?
高斯的方法我也知道,但遇到类似的题还是 我用的笨办法也是算法吗?
答:是算法。
算法是对特定问题求解步骤的种描述
算法只是对问题求解方法的一种描述,它不依赖于任何一种语言,既可以用自然语言、程序设计语言(C、C++、Java、Python等)描述。也可以用流程图、框图来表示。通常情况下,为了更清楚地说明算法的本质,我们会去除计算机语言的语法规则和细节,采用“伪代码”来描述算法。“伪代码”介于自然语言和程序设计语言之间,它更符合人们的表达方式,容易理解,但它不是严格的程序设计语言。如果要上机调试,则需要转换成标准的计算机程序设计语言才能运行。

 “算法的标准如下。

(1)正确性:正确性是指算法能够满足具体问题的需求,程序运行正常,无语法错误,能够通过典型的软件测试,达到预期。
(2)易读性:算法遵循标识符命名规则,简洁易懂,注释语句恰当适量,方便自己和他人阅读,便于后期调试和修改。
(3)健壮性:算法对非法数据及操作有较好的反应和处理。例如,在学生信息管理系统中登记学生年龄时,若将21岁误输入为210岁,则系统应该有错误提示。
(4)高效性:高效性是指算法运行效率高,即算法运行所消耗的时间短。
(5)低存储性:低存储性是指算法所需的存储空间小。对于像手机、平板电脑这样的嵌入式设备,算法如果占用空间过大,则无法运行。算法占用的空间大小被称为空间复杂度。
除了(1) (3)中的基本标准之外,好算法的评判标准是高效率、低存储。
(1)-(3)中的标准都好办,但时间复杂度怎么算呢?
时间复杂度:算法运行需要的时间。


 

2.一棋盘的麦子

引入故事:有一个古老的传说。 位国王的女儿不幸落水,水中有很多鳄鱼,国王情急之下下令:“谁能把公主救上来,就把女儿嫁给他。”很多人纷纷退让, 个勇敢的小伙子挺身而出,冒着生命危险把公主救了上来,国王看是个穷小子,想要反悔,说:“除了女儿,你要什么都可以。”小伙子说:“好吧,我只要一棋盘的麦子。您在第1个格子里放1粒麦子,在第2个格子里放2粒,在第3个格子里放4粒,在第4个格子里放8粒,以此类推,每一个格子里麦子的粒数都是前一格子里麦子粒数的两倍。把这64个格子放满了就行,我就要这么多。国王昕后哈哈大笑,觉得小伙子的要求很容易满足,满口答应。结果发现,把全国的麦子都拿来,也填不完这64个格子.国王无奈,只好把女儿嫁给了这个小伙子。​

 

解析

棋盘上的64个格子究竟需要放多少粒麦子?
把每一个格子里需要放的麦子粒数加起来,总和为S,则:
S=1+21+22+23++2831
对式1等号的两边乘以2,等式仍然成立:
2S=21+22+23,+263+2642
用式2减去式①,得:
S=264-1-18 446 744 073 709 551 615
据专家统计,每题麦粒的平均重星约41.9毫克,这些麦粒的总重量为:
18 446 744 073 709 551 615 ×41 9=772 918 576 688 430 212 668.5(毫克)
=7729/000(亿千克)
全世界人口按77亿计算,每人差不多可以分得100000千克(即100吨)

3.神奇的兔子数列

假设第1个月有1对初生的兔子,第2个月进入成熟期,第3个月开始生育兔子,而1对成熟的兔子每月会生1对兔子,兔子永不死去….…那么,由1对初生的兔子开始,12个月后会有多少对兔子呢?

 

问题分析

不妨拿新出生的1对小兔子分析。
第1个月,小兔子1没有繁殖能力,所以还是1对。
第2个月,小兔子1进入成熟期,仍然是1对。
第3个月,兔子1生了1对小兔子2,于是这个月共有2(1+1=2)对兔子。
第4个月,兔子1又生了1对小兔子3,因此共有3(1+2=3)对兔子。
第5个月,兔子1又生了1对小兔子4,而在第3个月出生的兔子2也生下了1对小兔子⑤,因此共有
5(2+3=5)对兔子。
第6个月,兔子1 2③各生下了1对小兔子,新生的3对兔子加上原有的5对兔子,这个月共有
8(3+5=8)对兔子。

     当斐波那契通过兔子繁殖告诉我们这种数学问题的本 字质——随着数列项的增加,前一项与后一项之比越来越逼近黄金分割数0.618时,我被彻底震撼,因为数学可以表达美,这是数学令我们叹为观止的地方。当数学创造出更多的奇迹时,我们会发现数学在本质上是可 换以回归自然的,这样的事例让我们感受到数学的美,就像黄金分割、斐波那契数列,它们如同大自然中的
    朵朵小花,散发着智慧的芳香.....

4.算法学习瓶颈

    很多人感叹:算法为什么这么难学!
    一个原因是,算法本身具有一定的复杂性。另一个原因是,讲得不到位!
    算法的教与学有两个困难。
    (1)我们学习了那些经典的算法,在惊叹它们奇妙的同时,难免疑虑重重:这些算法是怎么被想到的?这可能是最费解的地方。高手讲,学算法要学它的来龙去脉,包括种种证明。但对菜鸟来说,这简直比登天还难,他们很可能花费很多时间也无法搞清楚。对大多数人来说,这条路是行不通的,那怎么办呢?下功夫去记忆书上的算法?记住这些算法的效率?这样做看似学会了,其实两手空空,遇到新问题时仍无从下手。但这偏偏又是极为重要的,无论是做研究还是做实际工作,计算机专业人士最重要的能力就是解决问题
    一解决那些不断从实际应用中冒出来的新问题。
    (2)算法作为一门学问,有两条几乎平行的线索。一条是数据结构(数据对象:数、矩阵、集合、申、排列、图、表达式、分布等。另一条是算法策略:责心策略、分治策略、动态规划策略、线性规划策略、搜索策略等。这两条线索是相互独立的:对于同一个数据对象上不同的问题(如单源最短路径和多源最短路径),就会用到不同的算法策略(如贪心策略和动态规划策略);而对于完全不同的数据对象上的问题(如排序和整数乘法),也许就会用到相同的算法策略(如分治策略)
    两条线索交织在一起,该如何表述呢?我们早已习惯在一章中完全讲排序,而在另一章中完全讲图论。还没有哪一本算法书能够很好地解决这两个困难,传统的算法书大多注重内容的收录,却忽视思维过程的展示,因此我们虽然学习了经典的算法,却费解于算法设计的过程。
    本书从问题出发,根据实际问题分析、设计合适的算法策略,然后在数据结构上操作实现,巧妙地将数据结构和算法策略拧成一条线。全书通过大量实例,充分展现算法设计的思维过程,让读者充分体会求解问题的思路、如何分析、使用什么算法策略、采用什么数据结构、算法的复杂性如何、是否有优化的可能等等。这里,我们培养的是让读者怀着一颗好奇心去思考问题、解决问题,更重要的是—体会学习的乐趣,发现算法的美!

6.励志名言

持之以恒地学习,没有什么是学不会的。行动起来,没有什么不可以!

7:计算机算法一

如有想看计算机算法一(点击这里)

    ♥️关注,就是我创作的动力

    ♥️点赞,就是对我最大的认可

 

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

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

相关文章

【 C++11 】lambda表达式

目录 1、lambda表达式的引入 2、lambda表达式 lambda表达式的语法 lambda表达式捕捉列表说明 使用lambda表达式排序自定义类型 lambda表达式的底层原理 1、lambda表达式的引入 在C98中,如果想要对一个数据集合中的元素进行排序,可以使用std::sort方法&…

asp.net图书馆借阅归还系统

图书管理系统既是完整的知识定位系统,又是面向未来互联网发展的信息管理模式。图书管理系统,是一套利用计算机信息网络技术,实现对引用、注释和参考图书的自动化处理和规范化管理,服务于教师,学生及各类科研人员的集成…

【C语言进阶考试】你是否真正学懂了C语言

目录 前言 🎒选择题【全面深度剖析】 📗考点一:无符号数unsigned的理解与应用 📕考点二:字符ASCII计算与转换的理解和应用 📙考点三:对位操作符的理解与应用 📘考点四&#xf…

docker mysql 主从配置

准备:一台装有docker的虚拟机或者服务器 拉取mysql镜像: docker pull mysql:5.6 启动两个mysql容器 master docker run -p 1006:3306 --name mysql_master -v F:/mysql/mysql_master/conf:/etc/mysql -v F:/mysql/mysql_master/logs:/logs -v F:/mys…

【1024 | 程序员节】浅谈前端开发中常用的设计模式——适配器模式、工厂模式、单例模式等

前言 博主主页👉🏻蜡笔雏田学代码 专栏链接👉🏻【前端面试专栏】 今天学习前端面试题相关的知识! 感兴趣的小伙伴一起来看看吧~🤞 文章目录设计模式设计模式分类工厂模式什么是工厂模式工厂模式好处单例模式…

I2C知识大全系列三 —— I2C驱动之单片机中的I2C

两种方式 单片机中的I2C驱动有两种方式。一种方式是用专用硬件I2C控制器实现,这种方式简单易行,品质也容易控制,只是会增加硬件成本方面的压力。另一种方式是用纯软件方式实现,这种方式几乎无硬件成本方面的考虑。 主要对比&…

网页图片采集-网页图片采集软件免费

一款免费的网页图片采集软件可以采集网页上的各种图片,每个人都可以采集到各种高清图源。支持任意格式的图片采集,只需要导入链接即可批量采集图片。 还有更多的采集方式:输入关键词全网图片采集/任意网站所有图片采集!不仅可以采…

【C++】STL——vector(万字详解)

🎇C学习历程:入门 博客主页:一起去看日落吗持续分享博主的C学习历程博主的能力有限,出现错误希望大家不吝赐教分享给大家一句我很喜欢的话: 也许你现在做的事情,暂时看不到成果,但不要忘记&…

记首次参加网络安全比赛(初赛-知识竞赛,决赛-CTF夺旗赛-解题模式)

网络安全相关的方向很多,几乎IT相关的安全内容都可以涵盖在内。笔者本身的知识体系更偏向于编程语言和Web应用,本次参赛可谓极具挑战,但是就是喜欢这种感觉:) 赛程安排 9月16日接到通知 9月26日初赛 10月15日决赛 …

计算机网络习题答案

1、校园网属于(局域网LAN ) 2、在下列传输介质中,(光缆 )传输介质的抗电磁干扰性最好。 3、光纤上采用的多路复用技术为(WDM) 4、计算机网络的交换方式不包括 无线交换 5、网络体系结构模型OSI模型和TCP/IP模型…

区块链实训教程(6)--开发、编译、部署、调用HelloWorld合约

文章目录1. 任务背景2. 任务目标3. 相关知识点4. 任务实操4.1 新建合约文件4.2 编写合约代码4.3 保存、编译、部署合约4.4 调用合约5. 任务总结1. 任务背景 FISCO BCOS运用智能合约进行归纳资产管理、规则定义和价值交换等操作,所以我们需要学习如何使用智能合约。…

aws ec2 配置jenkins和gitlab

环境搭建 下载jenkins的war包,启动jenkisn nohup java -jar jenkins.war --httpPort8091 > jenkins.log 2>&1 &docker安装gitlab 默认情况下,Omnibus GitLab 会自动为初始管理员用户账号 (root) 生成密码,并将其存储到 /etc…

HarmonyOS系统中内核实现温湿度采集方法

大家好,今天主要来聊一聊,如何使用鸿蒙系统中的温湿度传感器方法。 第一:温湿度传感器基本原理 大部分的传感器是在环境温度变化后会产生一个相应的延伸,因此传感器可以以不同的方式对这种反应进行信号转换。常见的大部分是电阻…

gitlab cicd 5分钟快速入门搭建私人代码仓库

gitlab 是企业级私有服务器 本文章采用docker搭建gitlab 如有不懂可微信我号yizheng369 环境准备 购买阿里云服务器,或者其他服务器 注意:本文章是用阿里云的centos 7.6作为服务器 搭建步骤 1.设置环境变量 export GITLAB_HOME/srv/gitlab2.编写dock…

今天面了个阿里拿27k出来的小哥,让我见识到了什么是天花板

2022年堪称大学生就业最难的一年,应届毕业生人数是1076万。失业率超50%! 但是我观察到一个数据,那就是已经就业的毕业生中,计算机通信等行业最受毕业生欢迎! 计算机IT行业薪资高,平均薪资是文科其他岗位的3…

PLC NAND 虽来但远

前言 图片来源: 存储随笔 2022年8月份在美国FMS峰会上,Solidigm公司(前身为 Intel NAND 部门) 展示了全球第一款基于PLC NAND研发的SSD。这也标志着,PLC时代已正式拉开序幕。出于对 PLC 的好奇,本文分享PLC NAND 知识&#xff0…

C/C++描述 - 矩阵乘积的计算

矩阵运算是现代科学及工程计算的基石之一,而矩阵乘法则是其中最常见一种运算。对于二维矩阵A、B,如果A的列数等于B的行数,则矩阵A、B可乘,其结果矩阵C的行数等于A的行数,列数等于B的列数。 本文引用自作者编写的下述图…

ArcGIS || ENVI:如何将彩色影像拆分为R、G、B以及H、S、I(B/V)影像?

目录 01 加载RGB影像数据 02 分别将三个波段进行保存 03 将RGB三色图像转化为HSI(HSB或者叫HSV)图像 04 转换的HSI图像拆分成H、S、I三个影像 首先,需要明确,手机拍摄的影像即是Red、Green、Blue三波段影像; 另外,由于方法十分…

视觉合集3

这次的合集是找到了几个论文... 一起来说下 Fast Charging of Energy-dense Lithium-ion Batteries Real-time Short Video Recommendation on Mobile Devices Semantic interpretation for convolutional neural networks: What makes a cat a cat? Prompt-to-Prompt Ima…

【论文阅读】Pre-training Methods in Information Retrieval

文章目录前言Abs1.Intro2.Background2.1.A Hierarchical View of IR2.1.1.The Core Problem View of IR2.1.2.The Framework View of IR2.1.3.The System View of IR2.2.A Brief Overview of PTMs in IR前言 因为文章篇幅较长,因此还在持续阅读中原文(F…