算法与数据结构


算法:algorithm 解决问题的方法
一系列解决问题得,清晰得,可执行的计算机指令

特征cccccc

1、有限性
2、确定性:不会产生二义性 唯一
3、可行性 例如最大质数 但质数无穷得
4、输入 例如 休眠5分钟
5、输出 如果休眠5分钟则表示输出 抽象概念

排序算法

让数据有序

插入排序法

在这里插入图片描述
排好序,让当前排序元素与左边元素比较插入

在这里插入图片描述

重要特性

在这里插入图片描述
有序的话就会变成O(n)
整体,插入排序复杂度依然是O(n^2)

必须最坏情况,不能只计算最优解

冒泡排序法

选择排序法

先把最小拿出来 ⭐最⭐
剩下的,再把最小的拿出来
剩下的,再把最小的拿出来

复杂度永远O(n^2)
。。。。
每次把还没处理的元素里最小的元素

排序过程占用额外空间 =>原地排序

推荐方法:
在这里插入图片描述

实现选择排序法

在这里插入图片描述

使用带约束泛型

在这里插入图片描述

使用Compareable接口

在这里插入图片描述

选择排序法复杂度分析

希尔排序法

快速排序法

归并排序法

堆排序

计数排序

桶排序

技术排序

线性数据结构

动态数组

链表

队列

哈希表

高级数据结构

线段树

并查集

Trie

SQRT分解

查找算法

线性查找

如何适应更多数据类型
如何编写正确程序
如何性能测试
如何复杂度分析

案例:

在一打试卷中,找到属于自己那张试卷
第一张:不是
第二张:不是
第三张:不是
。。。
第十二张:是

案例:

在data数组中查找16
在这里插入图片描述

使用i++循环
数组 data
目标元素16
索引为4

代码:int

在这里插入图片描述

代码:泛型

使用泛型 不可以是基本数据类型,只能是类对象
boolean byte char short int long float double

每个基本数据类型都有对应包装类
Boolean Byte Character Short Integer Long Float Double
在这里插入图片描述

案例 设计一个student类

在这里插入图片描述

循环不变量

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

复杂度分析

复杂度分析:表示算法的性能
多方面分析
性能和数据规模n呈正比
O(n) 常数不重要
复杂度描述的是随着数据规模n的增大,算法性能的变化趋势
T=c1*n+c2
在这里插入图片描述

在这里插入图片描述

常见算法复杂度

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

案例

在这里插入图片描述

二分查找

经典树结构

二分搜索树

AVL

红黑树

B类树

字符串算法

KMP

模式匹配

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值