【算法学习】Java数据结构与算法

时间复杂度和一些排序

常数操作、和数据量有关的操作;

1.选择排序:

一趟以后,选出最小的值放在0位置;

……

在这里插入图片描述

时间复杂度:N^2

额外空间复杂度:1

时间复杂度

评价一个算法流程的好坏,先看时间复杂度的指标,然后在分析不同数据样本下的实际运行时间,也就是“常数项时间”

额外空间复杂度:

2.冒泡排序:

每一趟冒出最大的数到最后

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1h3T3xGN-1690868265018)(C:\Users\xiaoxin\AppData\Roaming\Typora\typora-user-images\image-20211115201353158.png)]

这里的交换函数,用了位运算;

3.位运算之异或:

这里听了太多次了,记得这句话就行了:在这里插入代码片

​	int rightOne=odd&(~odd+1);//提取odd位中最右边的1

	a^a=0;

	a^0=a;

4.插入排序:

i趟排序之后,前i个元素是有序的;

在这里插入图片描述

5.二分法:

1.在一个有序数组中,查找某个数是否存在

2.在一个有顺序数组中,找>=某个数最左侧的位置

3.局部最小值问题:相邻的数中中间是最小的

1.就是折半查找:

log N

在这里插入图片描述

2.二分查找不小于a的位置并记录,最后最左得的数就是所求。

3.先判断0位置和n-1位置是否为局部最小;如有就返回;没有的话,局部最小值一定存在在1~n-2之间,直接取中间位置m,判断m位置是否为局部最小值,若不是,左侧或者右侧一定有局部最小值;

4.对数器:

设计出了自己的算法,就可以用对数器的方法来测试(比如暴力解法和自带的方法)

生成随机的数组:

长度随机,值也随机。
这些随机数组来测试自己的算法是否可行
在这里插入图片描述

在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值