Java实现的两种常见简单查找算法示例【快速查找与二分查找】

 更新时间:2017年09月12日 08:55:05   作者:perfect亮  
这篇文章主要介绍了Java实现的两种常见简单查找算法,结合具体实例形式分析了java快速查找与二分查找的原理与简单实现技巧,需要的朋友可以参考下

本文实例讲述了Java实现的两种常见简单查找算法。分享给大家供大家参考,具体如下:

前言:

查找是指从一批记录当中找出满足制定条件的某一记录的过程。

在平常的程序的编写当中很多时候时用得上的,这里简单介绍两个查找算法

1. 快速查找:

这个是相当简单的,以数组举例,就用一个for循环去查找数组中需要查找的数据

例子:

public static boolean quickSearch(int a[], int x) {
    boolean f = false;
    int length = a.length;
    int i;
    for (i = 0; i < length - 1; i++) {
      if (x == a[i]) {
        f = true;
        break;
      }
    }
    return f;
}

2. 二分法(折半)查找:

二分法查找,其要求数据序列必须是呈线性结构的,也就是说数据序列必须是排过序的才能用二分法。

直接举例(使用二分法的时候采用递归即可):

// 二分法方法一
public static boolean erFen(int a[], int low, int high, int x) {
    boolean f = false;
    if (low <= high) {
      if (x < a[(low + high) / 2]) {
        f = erFen(a, low, (low + high) / 2 - 1, x);
      } else if (x > a[(low + high) / 2]) {
        f = erFen(a, (low + high) / 2 + 1, high, x);
      } else if (x == a[(low + high) / 2]) {
        f = true;
      }
    }
    return f;
}
// 二分法方法二
public static boolean erFen2(int a[], int x) {
    boolean f = false;
    int length = a.length;
    int low = 0;
    int high = length - 1;
    int mid;
    while (low <= high) {
      mid = a[(low + high) / 2];
      if (mid < x)
        low = (low + high) / 2 + 1;
      else if (mid > x)
        high = (low + high) / 2 - 1;
      else if (mid == x) {
        f = true;
        break;
      }
    }
    return f;
}

更多关于java算法相关内容感兴趣的读者可查看本站专题:《Java数据结构与算法教程》、《Java操作DOM节点技巧总结》、《Java文件与目录操作技巧汇总》和《Java缓存操作技巧汇总

希望本文所述对大家java程序设计有所帮助。

相关文章

  • SpringBoot CommandLineRunner应用启动后执行代码实例

    SpringBoot CommandLineRunner应用启动后执行代码实例

    本文将深入探讨CommandLineRunner的工作原理、使用场景及最佳实践,帮助开发者充分利用这一功能,构建更加健壮的Spring Boot应用,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2025-04-04
  • 通过java反射机制动态调用某方法的总结(推荐)

    通过java反射机制动态调用某方法的总结(推荐)

    下面小编就为大家带来一篇通过java反射机制动态调用某方法的总结(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2016-07-07
  • FeignClientFactoryBean创建动态代理详细解读

    FeignClientFactoryBean创建动态代理详细解读

    这篇文章主要介绍了FeignClientFactoryBean创建动态代理详细解读,当直接进去注册的方法中,一步步放下走,都是直接放bean的定义信息中放入值,然后转成BeanDefinitionHolder,最后在注册到IOC容器中,需要的朋友可以参考下
    2023-11-11
  • mybatis如何设置useGeneratedKeys=true

    mybatis如何设置useGeneratedKeys=true

    这篇文章主要介绍了mybatis如何设置useGeneratedKeys=true,具有很好的参考价值,希望对大家有所帮助。
    2022-01-01
  • mybatis中映射文件(mapper)中的使用规则

    mybatis中映射文件(mapper)中的使用规则

    这篇文章主要介绍了mybatis中映射文件(mapper)中的使用规则,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-11-11
  • java实现微信点餐申请微信退款

    java实现微信点餐申请微信退款

    这篇文章主要为大家详细介绍了java实现微信点餐申请微信退款,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-09-09
  • Java里遍历Map集合的多种方法总结

    Java里遍历Map集合的多种方法总结

    Java中的Map是一种键值对映射的数据结构,它提供了一些常用的方法用于获取、添加、删除和修改元素,在Java中,有多种方式可以遍历Map,本文将介绍其中的四种常用方式,并比较它们之间的优缺点,需要的朋友可以参考下
    2024-07-07
  • SpringBoot项目加入冲突动态监测算法的实现

    SpringBoot项目加入冲突动态监测算法的实现

    冲突动态监测算法是一种网络通信中的冲突检测方法,适用于无线网络或其他共享传输介质的环境,本文主要介绍了SpringBoot项目加入冲突动态监测算法的实现,感兴趣的可以了解一下
    2023-09-09
  • 如何使用Jackson和JSON Pointer查询解析任何JSON节点

    如何使用Jackson和JSON Pointer查询解析任何JSON节点

    本文介绍了JSON Pointer是字符串表达式,可以非常方便解析复杂JSON节点值,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-09-09
  • 深入讲解Java中的多态和抽象类

    深入讲解Java中的多态和抽象类

    这篇文章主要介绍了深入讲解Java中的多态和抽象类,有时候,设计一个数组或方法的参数,返回值类型时,无法确定具体的类型,只能确定是某个系列的类型,这时就引入了多态,需要的朋友可以参考下
    2023-08-08

最新评论