从0开始的算法(数据结构和算法)基础(一)

       当我们学会算数开始,算法就无处不在,买菜的时候18元的菜,手上就20元和三张1块的,大多数的人都会全给然后找5块吧。它们是计算机科学的核心,在数字时代更是如此,是解决问题的关键,一个好的算法工程师,到哪去都是很吃香的,对于一个普通程序猿来说,能够掌握算法(不是知道,不会用),但算法究竟是什么?它们是如何工作的?

什么是算法?

       根据计算机科学的标准定义,算法(Algorithm)是一系列定义明确的操作步骤,用于解决特定的计算问题。这个定义源自《计算机程序的构造和解释》(Structure and Interpretation of Computer Programs)等经典计算机科学教材,强调了算法的精确性、有序性和有限性。
       上面的是官方给出的定义,知道这很难理解,不过换成我们小学的的两个锅煎三个煎饼的问题,一般步骤先煎两个饼,再煎一个饼,整体来说就是煎两个饼的时间,但是如果先煎两个饼的一面,再将一个放下煎另一个,最后时间是一个半的饼的时间。这个就是算法,根据步骤去完成,两种算法就是两种想法,好的算法就是能够节省时间或者空间。明确的指令,用于解决特定问题或执行特定任务,数据处理、计算和自动推理的步骤。

算法的基本特征

  1. 明确性:算法的每一步都必须清晰明确,没有歧义。
  2. 有限性:算法必须在有限的步骤内完成任务。
  3. 输入:算法可以有零个或多个输入。
  4. 输出:算法至少有一个输出。
  5. 有效性:算法的每一步都必须是可行的,能够在有限的时间内完成。

算法的类型

       算法有很多种类型,每种都有其特定的用途和特点。以下是一些常见的算法类型:

  1. 排序算法:如快速排序、归并排序,用于将一组数据按照特定的顺序排列。
  2. 搜索算法:如二分查找、深度优先搜索,用于在数据集中查找特定的元素。
  3. 图算法:如Dijkstra算法、A*算法,用于解决图结构中的路径问题。
  4. 动态规划:用于解决具有重叠子问题和最优子结构性质的问题。
  5. 机器学习算法:如决策树、神经网络,用于从数据中学习模式和规律。

为啥我们要学算法?

       
算法的重要性在计算机科学和信息技术领域中是无可比拟的,它们是构建现代科技世界的基石。以下是算法重要性的几个关键点:

  1. 效率与性能:算法决定了计算机程序的运行效率和性能。一个设计良好的算法可以显著减少计算时间,提高资源利用率,从而使得软件更加高效和响应迅速。

  2. 问题解决:算法是解决复杂问题的关键。无论是数据分析、机器学习、网络安全还是图形处理,都需要依赖特定的算法来实现解决方案。

  3. 创新与进步:算法的创新推动了科技的进步。新的算法可以开辟新的应用领域,例如深度学习算法的发展推动了人工智能的突破。

  4. 优化与资源管理:在资源有限的环境中,算法帮助我们优化资源分配,例如在云计算中优化服务器负载,或在移动设备上优化电池使用。

  5. 可扩展性:随着数据量的增长,算法需要能够处理更大规模的数据集。优秀的算法设计可以确保系统随着数据增长而保持高效。

  6. 用户体验:在用户界面和交互设计中,算法决定了用户体验的流畅性和直观性。例如,搜索引擎的排名算法直接影响用户的搜索体验。

  7. 安全性:在网络安全领域,算法用于加密和解密数据,确保信息传输的安全性。密码学算法是保护个人和商业数据不被未授权访问的基础。

  8. 教育和研究:算法是计算机科学教育的核心内容,它们帮助学生理解计算机如何处理信息和解决问题。同时,算法研究也是推动学科前沿发展的重要途径。

总之,算法是计算机科学和信息技术领域的核心,它们不仅影响着软件和硬件的设计,还深刻地影响着我们的日常生活和工作方式。随着技术的不断进步,算法的重要性只会越来越凸显。

如何学习算法

       学习算法其实很难。难得坚持下去,很多人只是知道部分算法,只会在特定环境下使用,算法重要的是思想,练习的多了就会了,有时候第一步是最难的(开始写),没关系,最开始从背逻辑开始,抄的多了,俺也不会 :) ,这是一个递进的过程,至少要减少使用暴力解法(刷题到了一定地步后,前期就是要能写,不要不敢写,看答案又觉得会),而且一题有多种解法,不一定就是最优:

  1. 基础知识:首先掌握编程基础(掌握一门编程语言的基础语法,至少知道逻辑能够写成伪代码)和数据结构,这是学习算法的基础。
  2. 实践:通过解决实际问题来练习算法,如参加在线编程挑战或解决算法题目。leetcode(推荐):https://leetcode.cn/
    杭电oj:https://leetcode.cn/
    上面的是纯使用后的感受,用leetcode的评测效果比较好,oj上面的题目比较经典不过提交很烦,让我有很大的想砸电脑的冲动。

在这里插入图片描述

别人的表情包,有问题联系我,侵删

  1. 学习资源:利用在线课程、教科书和论坛来学习不同类型的算法。这一本比较适合初学者:https://www.hello-algo.com/chapter_introduction/algorithms_are_everywhere/#__tabbed_1_5
  2. 分析和优化:学习如何分析算法的时间复杂度和空间复杂度,以及如何优化算法以提高效率。

结语

       算法是计算机科学的基石,它们是解决问题的关键。机器是呆板的(严谨的),只会通过你的步骤逻辑去执行,(把大象装进冰箱拢共分几步?)通过理解算法的基本概念、类型和重要性,我们可以更好地利用它们来解决现实世界中的复杂问题。后续更行简单的算法内容关注,持续更新中~~

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值