Java数据结构与算法-算法概述(补充)

前言

算法概述

1.1 算法分类
  • 算法是一门古老且庞大的学科,随着历史的发展,演化出多种多样的算法。
    • 1.按照应用来分类
      • 按照算法的应用领域,也就是解决的问题。大致可以分为基本算法、数据结构相关算法、几何算法、图论算法、规划算法、数值分析算法、加密/解密算法、排序算法、查找算法、并行算法和数论算法等。
    • 2.按照确定性来分类
      • 确定性算法:有限时间内完成计算,得到结果是惟一的,经常取决于输入值。
      • 非确定性算法:有限时间内完成计算,得到结果不唯一,存在多值性。
    • 3.按照算法的思路来分类
      • 大致可分为递推算法、递归算法、穷举算法、贪婪算法、分治算法、动态规划算法和迭代算法等多种。
1.2:算法相关概念
  • 数据结构+算法+程序设计语言=算法
    • 数据结构往往表示的是处理的对象
    • 算法是计算和处理的核心方法
    • 程序设计语言是算法的实现方法。
1.3:算法的表示
  • 算法描述的方式大致采用自然语言、流程图、N-S图、伪代码等表示。
    • 自然语言

      • 通俗来说,自然语言就是平时口头描述的语言。对于一些很简单的算法,可以采用自然语言来口头描述算法的执行过程。
      • 在古代的早期算法也可以看做自然语言表示。但是自然语言比较复杂,很大程度上阻碍了中国古代算法(如割圆术秦九韶算法等)的发展。这也是我国古代算法起源早,但后期落后于西方国家的原因。
    • 流程图表示

      • 由一些图框和流程线组成,图框表示各种操作的类型,图框中的说明文字和符号表示该操作的内容,流程线表示操作的先后次序。
      • 最大优点:简单直观、便于理解。如计算两个输入数据a和b的较大值,可以采用如下流程图来标识
        • image-20210624123200499
      • 常见三种流程结构
        • 顺序结构
          • 最简单的流程结构,一个一个进行处理。
          • image-20210624145016865
        • 分支结构(条件结构)
          • 常用于根据某个条件来决定算法的下一步走向。
          • image-20210624145027898
        • 循环结构
          • 常用于需要反复执行的算法操作。根据循环方式,可以分为直到型循环结构和当型循环结构。
          • 当型循环结构
            • 先对条件进行判断,然后执行,一般用while
            • image-20210624145049479
          • 直到型循环结构
            • 先执行,然后对条件判断,一般采用do…while
            • image-20210624145104650
    • N-S图表示

      • N-S图也被称为盒图或者CHAPIN图。流程图虽然可以清楚的表示算法或者程序的运行过程,但是其中的流程线并不是必须的。N-S图中将整个程序写在一个大框图中,由若干个小的基本狂徒构成。
      • image-20210628101036848
    • 伪代码表示

      • 伪代码并非真正的程序代码,其介于自然语言和编程语言之间。伪代码并不能在计算机上运行,使用伪代码的目的是将算法描述成一种类似于编程语言的形式。

      • Coder可以借助伪代码很容易的理解算法的结构,然后根据不同编程语言的语法特点,加以完善就可以实现一个真正的算法程序。

      • 例子

        变量a<输入数据
        变量b<输入数据
        if a>b
        	变量max=a
        else
        	变量max=b
        输出变量max
        程序结束
        
      • 描述应该结构清晰、代码简单、可读性好。

1.4 算法的性能评价
  • 算法其实就是一种解决问题的方法,解决一个问题可以使用的方式和方法是不一样的,所耗费的时间或者花费的资源也不一样。
  • 一个算法的优劣往往通过算法复杂度来衡量,算法复杂度包括时间复杂度和空间复杂度两个方面
    • 时间复杂度
      • 通常来说就是算法执行所需要耗费的时间,时间越短,算法越好。此外,时间复杂度还与问题规模有关。
    • 空间复杂度
      • 空间复杂度是指算法程序在计算机中执行所需要消耗的存储空间。
        • 程序保存所需要的存储空间,也就是程序的大小。
        • 程序在执行过程中所消耗的存储空间资源,比如需要保存的中间变量之类
1.5 算法的发展
  • 算法起源早,早起依赖于演算和手工计算的层面,计算机出现之后,算法在计算机编程领域再次获得了更大发展,一些以前不可能实现的算法都可以实现了。算法扎根于数学和物理,通过学科上的新发展往往能激发一些新的算法应用产生。

得了更大发展,一些以前不可能实现的算法都可以实现了。算法扎根于数学和物理,通过学科上的新发展往往能激发一些新的算法应用产生。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 7
    评论
根据引用,这篇博客是关于一位学生利用整个暑假的时间来学习《数据结构与算法》课程并且持续更新的。而引用是一份关于Java数据结构与算法的学习笔记,涵盖了数据结构与算法概述、分类以及算法分析的内容。引用给出了数据结构的官方解释和大白话解释,以及数据结构的分类和物理结构的介绍。 所以,关于数据结构与算法的笔记,你可以参考这些资源来了解数据结构的概念、分类和物理结构,以及算法的分析和时间复杂度等内容。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* [数据结构与算法——学习笔记汇总](https://blog.csdn.net/qq_42025798/article/details/118864568)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] - *2* *3* [Java数据结构与算法1-概述学习笔记](https://blog.csdn.net/qq_45498432/article/details/124067892)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v92^chatsearchT3_1"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值