算法总结

算法总结

七种查找

  1. 基本查找

  2. 二分查找

  3. 插值查找

  4. 分块查找

  5. 斐波那契查找

  6. 哈希查找

  7. 树表查找

  8.  

基本查找:从0索引开始挨个往后找,也叫顺序查找


二分查找/折半查找:可以提高查找效率

前提条件:数组中的数据必须是有序的

核心逻辑:每次排除一半的范围

  1. min和max表示当前要查找的范围

  2. mid是在min和max中间的

  3. 如果要查找的元素在mid左边,缩小范围时,min不变,max等于mid-1

  4. 如果要查找的元素在mid右边,缩小范围时,max不变,min等于mid+1

     

    二分查找改进/插值查找

    mid=min+((key-arr[min])/(arr[max]-arr[min]))*(max-min)

    key-要查找的值

    数组中的值分布比较均匀才适合用

    斐波那契查找 1:0.618

    mid=min+黄金分割点左边长度-1

     

排序算法

1.冒泡算法 :相邻的数据两两比较,小的放前面,大的放后面

2.选择排序:从0索引的元素跟后面的元素依次比较,小的放前面,大的放后面,以此类推

3.插入排序:将0索引的元素到N索引的元素看作是有序的,把N+1索引的元素到最后一个当成无序的,遍历无序的数据,将遍历到的元素插入有序序列中适当的位置,如遇到相同数据,插到后面,

N的范围:0-最大索引

递归算法

把一个复杂的问题层层转化为一个与原问题相似的规模较小的问题来求解

递归:方法中调用方法本身的现象 注意递归一定要有出口,否则会内存溢出

递归策略只需少量的程序就可以描述出解题过程所需的多次重复计算

书写递归的两个核心

  1. 找出口:什么时候不再调用方法

  2. 找规则:如何把大问题变成规模较小的问题

 

快速排序

  • 将排序范围中的第一个数字作为基准数,再定义两个变量start,end

  • start从前往后找比基准数大的,end从后往前找比基准数小的

  • 找到之后交换start和end指向的元素,并循环这一过程,直到start和end处于同一个位置,该位置是基准数组中应存入的位置,再让基准数归位

  • 归位后的效果:基准数左边的比基准数小,右边的比基准数大

posted @   java贼溜  阅读(9)  评论(0编辑  收藏  举报
编辑推荐:
· AI与.NET技术实操系列(二):开始使用ML.NET
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
阅读排行:
· DeepSeek 开源周回顾「GitHub 热点速览」
· 物流快递公司核心技术能力-地址解析分单基础技术分享
· .NET 10首个预览版发布:重大改进与新特性概览!
· AI与.NET技术实操系列(二):开始使用ML.NET
· 单线程的Redis速度为什么快?
点击右上角即可分享
微信分享提示