[Java]查找算法&排序算法

文章目录


查找算法

1. 基本查找/顺序查找

例子:

2. 二分查找/折半查找

  • 数组中的数据必须是有序的
  • 每次排除一半的查找范围

图中代码是左闭右闭的情况,循环判断条件为 left <= right,才为合法区间。

参考代码随想录,二分查找。

差值查找(二分查找改进):

数据分布最好要比较均匀。

斐波那契查找(二分查找改进、知道原理即可):
总结

3. 分块查找


代码示例:


扩展的分块查找(无规律的数据)

分块原则:每一块的数据不能有交集

4. 哈希查找(知道原理即可)

排序算法

1. 冒泡排序

2. 选择排序



3. 插入排序

4. 快速排序

图一:

这个 while 循环就是 start 和 end 的遍历,就是为了找到基准数要被交换的位置。

图二:

图三:

循环内部通过两指针指向数据的交换,来实现,基准数左边的数 < 基准数,基准数右边的数 > 基准数。

所以while内每次循环末,都要进行数据交换。

以下最后:

完善函数结束部分,传递递归:

跳出while循环,要将 "起始 i 位置的数据" 和 "start==end位置的数据" 进行交换。
函数末尾,进行递归的向下传递

完善函数开始部分:

结束递归

测试:

总结

相关推荐
顺风尿一寸1 分钟前
记一次 Spring AOP 与定时任务引发的死锁排查
java
用户446139430275 分钟前
从单体到微服务:我们项目的拆分思路和踩坑记录
java
TDengine (老段)35 分钟前
TDengine 免费版说明
java·大数据·数据库·物联网·时序数据库·tdengine
码上有光39 分钟前
异常和智能指针
java·大数据·c++·servlet·异常·智能指针
变量未定义~42 分钟前
最小生成树1(Prim模板)、最小生成树2(kruskal模板)、最近公共祖先(模板)
算法
这就是佬们吗1 小时前
Python入门⑤-异常处理、文件操作与实战项目
开发语言·数据库·python·算法·pycharm
LONGZETECH1 小时前
新能源汽车充电设备装配与调试仿真教学软件 技术架构与核心实现解析
大数据·算法·3d·unity·架构·汽车
自学小白菜1 小时前
关于提升机器学习算法做预测回归任务精度的方法分享
算法·机器学习·回归·提升精度
学废了wuwu1 小时前
从入门到实战:深入浅出模型压缩三大核心——剪枝、彩票假设与知识蒸馏
人工智能·算法·剪枝
小肝一下1 小时前
3. 单链表
c语言·数据结构·c++·算法·leetcode·链表·dijkstra