《JAVA常用算法手册》学习笔记(一)

本文介绍了算法的五个典型特征:有穷性、确切性、输入、输出和可行性,并按照应用、确定性和思路对算法进行了分类。同时,文章还探讨了算法的表示方式及算法性能的评估方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

典型算法的5个特征:

  • 有穷性:算法的指令或者步骤的执行次数是有限的,执行时间也是有限的
  • 确切性:算法的每一个指令或者步骤都必须有明确的定义和描述
  • 输入:一个算法需要有一个输入条件,用于刻画运算对象的初始情况
  • 输出:一个算法需要一个明确的结果输出
  • 可行性:算法的执行步骤必须是可行的,且可以在有限的时间内完成

算法的分类:

1.按照应用来分类(按解决的问题)

      分为基本算法、数据结构相关的算法、几何算法、图论算法、规划算法、数值分析算法、加密/解密算法、排序算法、查找算法、并行算法和数论算法等

2.按照确定性分类

  • 确定性算法:得到的结果唯一的,且经常取决于输入值
  • 非确定性算法:得到的结果往往不唯一,存在多值性

3.按照算法的思路分类

      分为递推算法、递归算法、穷举算法、贪婪算法、分治算法、动态规划算法和迭代算法等

算法相关概念:

  • 程序设计语言是算法实现的一种形式,也是一种工具
  • 数据结构是算法实现的基础
  • 数据结构 + 算法 + 程序设计语言 = 程序

  • 这里的数据结构表示的是处理的对象,算法是计算和处理的核心方法,程序设计语言是算法的实现方法

算法的表示:

1.自然语言

2.流程图:

3.N-S图:也称为盒图或者CHAPIN图,去除了流程图中的流程线

                               

4.伪代码:要求描述结构清晰、代码简单、可读性好

算法的性能

1.时间复杂度

2.空间复杂度

  • 程序保存所需要的存储空间,即程序的大小
  • 程序在执行过程中所需要消耗的存储空间资源,如程序在执行过程中的中间变量
算法基础篇 **章 算法和实现算法Java语法 1.1 建立算法初步概念 1.1.1 什么是算法 1.1.2 算法的发展历史 1.1.3 算法的分类 1.2 算法相关概念的区别 1.2.1 算法与公式的关系 1.2.2 算法与程序的关系 1.2.3 算法与数据结构的关系 1.3 算法的表示 1.3.1 自然语言表示 1.3.2 流程图表示 1.3.3 N-S图表示 1.3.4 伪代码表示 1.4 算法的性能评价 1.4.1 时间复杂度 1.4.2 空间复杂度 1.5 算法实例 1.5.1 查找数字 1.5.2 创建项目 1.5.3 编译执行 1.6 Java程序的基本结构 1.6.1 类是个基本单元 1.6.2 main方法 1.6.3 自定义方法 1.6.4 System.out.println的使用 1.6.5 个简单而完整的程序 1.7 顺序结构 1.8 分支结构 1.8.1 if...else分支结构 1.8.2 if...else嵌套 1.8.3 switch语句 1.8.4 编程实例 1.9 循环结构 1.9.1 while循环 1.9.2 do…while循环 1.9.3 for循环 1.9.4 编程实例 1.10 跳转结构 1 1.10.3 编程实例 1.11 小结 第2章 数据结构 2.1 数据结构概述 2.1.1 什么是数据结构 2.1.2 数据结构中的基本概念 2.1.3 数据结构的内容 2.1.4 数据结构的分类 2.1.5 数据结构的几种存储方式 2.1.6 数据类型 2.1.7 常用的数据结构 2.1.8 选择合适的数据结构解决实际问题 2.2 线性表 2.2.1 什么是线性表 2.2.2 线性表的基本运算 2.3 顺序表结构 2.3.1 准备数据 2.3.2 初始化顺序表 2.3.3 计算顺序表长度 2.3.4 插入结点 2.3.5 追加结点 2.3.6 删除结点 2.3.7 查找结点 2.3.8 显示所有结点 2.3.9 顺序表操作实例 2.4 链表结构 2.4.1 什么是链表结构 2.4.2 准备数据 2.4.3 追加结点 2.4.4 插入头结点 2.4.5 查找结点 2.4.6 插入结点 2.4.7 删除结点 2.4.8 计算链表长度 2.4.9 显示所有结点 2.4.10 链表操作实例 2.5 栈结构 2.5.1 什么是栈结构 2.5.2 准备数据 2.5.3 初始化栈结构 2.5.4 判断空栈 2.5.5 判断满栈 2.5.6 清空栈 2.5.7 释放空间 2.5.8 入栈 2.5.9 出栈 2.5.10 读结点数据 2.5.11 栈结构操作实例 2.6 队列结构 2.6.1 什么是队列结构 2.6.2 准备数据 2.6.3 初始化队列结构 2.6.4 判断空队列 2.6.5 判断满队列 2.6.6 清空队列 2.6.7 释放空间 2.6.8 入队列 2.6.9 出队列 2.6.10 读结点数据 2.6.11 计算队列长度 2.6.12 队列结构操作实例 2.7 树结构 2.7.1 什么是树结构 2.7.2 树的基本概念 2.7.3 二叉树 2.7.4 准备数据 2.7.5 初始化二叉树 2.7.6 添加结点 2.7.7 查找结点 2.7.8 获取左子树 2.7.9 获取右子树 2.7.10 判断空树 2.7.11 计算二叉树深度 2.7.12 清空二叉树 2.7.13 显示结点数据 2.7.14 遍历二叉树 2.7.15 树结构操作实例 2.8 图结构 2.8.1 什么是图结构 2.8.2 图的基本概念 2.8.3 准备数据 2.8.4 创建图 2.8.5 清空图 2.8.6 显示图 2.8.7 遍历图 2.8.8 图结构操作实例 2.9 小结 第3章 基本算法思想 3.1 常用算法思想概述 3.2 穷举算法思想 3.2.1 穷举算法基本思想 3.2.2 穷举算法实例 3.3 递推算法思想 3.3.1 递推算法基本思想 3.3.2 递推算法实例 3.4 递归算法思想 …… 第2篇 算法应用篇 第4章 排序算法 第5章 查找算法 第6章 基本数学问题 第7章 数据结构问题 第8章 数论问题 第9章 算法经典趣题 **0章 游戏中的算法 **1章 密码学概述 **2章 压缩与解压缩算法 第3篇 算法面试篇 **3章 数学能力测试 **4章 算法面试题
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值