美文网首页程序员
Java基础——线性、二分查找算法

Java基础——线性、二分查找算法

作者: 剑起长歌 | 来源:发表于2019-02-15 11:31 被阅读6次

一、线性查找法:

又称为顺序查找。在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。

举个例子:

//先定义一个数组,然后我们获取用户输入的数字,在下面的数组中查找,如果找到就输出该数字的下标
int [] array = {10,12,15,8,19,20,18,60,53,48,29};
public static void main(String[] args) {
System.out.println("请输入要查找的数字:");
        Scanner input = new Scanner(System.in);
        int num_input = input.nextInt();
        
        int index = -1;//保存找到数字的下标,如果没有则是-1
        for(int i = 0 ; i < array.length ; i++) {
            if(num_input == array[i]) {
                index = i;
            }
        }
        if(index == -1) {
            System.out.println("没有找到输入的数字");
        }else {
            System.out.println("输入的数字在第" + (index+1) + "个");
        }
}

如果需要我们取出数组中的最大值,我们也可以用这种方法实现:

public static void main(String[] args) {
        int max = array[0];
        for(int i = 0 ; i < array.length ; i++) {
            if(max<array[i]) {
                max = array[i];
            }
        }
        System.out.println("数组中最大值是" + max);
}

二、二分查找算法

又称为折半查找法。将数组中间位置记录的关键字与查找关键字比较,如果两者相等,则查找成功;否则利用中间位置记录将数组分成前后两个子数组,如果中间位置记录的关键字大于查找关键字,则进一步查找前一子数组,否则进一步查找后一子数组,重复以上过程,知道找到或找不到为止。不过这种方法只能对有序的数组(即已经排好序的数组)。

示例代码:

//还是先定义一个数组,然后我们获取用户输入的数字,在下面的数组中查找,如果找到就输出该数字的下标
 int[] array = { 1, 3, 5, 6, 8, 16, 18, 22, 28 };
 
 public static void main(String[] args) {
        
        System.out.println("请输入要查找的数字:");
        Scanner input = new Scanner(System.in);
        int number = input.nextInt();
        int index = -1;// 保存找到数字的下标,如果没有则是-1
        int start = 0;// 起始下标
        int end = array.length - 1;// 终止下标
        int middle;// 中间下标

        while (start <= end) {
            // 找到中间下标所对应的的元素值
            middle = (start + end) / 2;
            int num_middle = array[middle];
            
            if (number == num_middle) {
                index = middle;
                break;
            }
            // 如果要查找的数值大于中间值
            if (number > num_middle) {
                start = middle + 1;
            }
            // 如果要查找的数值小于中间值
            if (number < num_middle) {
                end = middle - 1;
            }
        }

        if (index == -1) {
            System.out.println("没有找到输入的数字");
        } else {
            System.out.println("输入的数字在第" + (index + 1) + "个");
        }
 
 }

通过二分查找算法查找数组里的对象比线性查找算法性能要高很多,特别是当数组很大的时候。

相关文章

  • 算法

    一.算法基础--算法的特性 二.算法基础--算法的复杂度 三.顺序查找和二分查找 顺序查找 二分查找(前提是有序的...

  • Java基础——线性、二分查找算法

    一、线性查找法: 又称为顺序查找。在一列给定的值中进行搜索,从一端开始逐一检查每个元素,直到找到所需元素的过程。 ...

  • 二分查找算法

    一、二分查找算法 二分查找算法又称为折半查找算法,它是一种效率较高的查找方法。但是,折半查找要求线性表必须采用顺序...

  • Chapter 2 Foundation of Algorith

    Chapter 2 插入排序 线性查找 选择算法 归并排序算法 二分查找算法 冒泡排序 插入排序 循环不...

  • 『算法』『数据结构』 浅谈二分算法,理解程序员必懂必会的计算机常

    基本认识 二分算法,又名二分查找、折半查找,是一种查找算法,是最基础的,最简单易学且高效实用的算法之一。二分算法的...

  • Java数据结构与算法:查找算法

    在java中,我们常用的查找有四种: 顺序(线性)查找 二分查找/折半查找 插值查找 斐波那契查找 1、线性查找 ...

  • 排序算法

    算法与数据结构基础 查找算法: 二分查找法: 简介:二分查找法又被称为折半查找法,用于预排序的查找问题 过程: 如...

  • 数据结构与算法系列 (5) 查找算法

    1.概述 2.常见的查找算法 2.1 顺序(线性)查找 2.1.2 代码示例 2.2 二分查找/折半查找 2.2....

  • 麻省-计算机-6

    1、algorithm算法、linear线性的、binary search二分查找、advantage优势、red...

  • 数据结构与算法之美笔记——二分查找(下)

    摘要: 基础的二分查找算法无论是概念还是实现都比较简单(关于 二分查找基础实现文章 可点击此处查看),但二分查找存...

网友评论

    本文标题:Java基础——线性、二分查找算法

    本文链接:https://www.haomeiwen.com/subject/wpjpeqtx.html