对有序数组进行线性搜索的java实现

Posted

技术标签:

【中文标题】对有序数组进行线性搜索的java实现【英文标题】:java implementation of the linear search on a sorted array 【发布时间】:2018-06-06 02:06:24 【问题描述】:

我正在尝试实现一个 java 代码来测试排序数组上的线性搜索,这是我的代码

public class ArrayTest 
public static void main(String [] args) 
    int []x= 12,8,6,23,6,5,17,20,9;
    int y  =linearSearch(x,23);

public static  int linearSearch(int []ar,int value) 
    int searchedIndex=-1;
    for(int i=0;i<ar.length;i++) 
        if (ar[i]==value) 
            searchedIndex=i;
            break;
        
    
    return searchedIndex ;



问题是这不会产生任何输出,也没有产生错误。谁能解释一下这个原因。

【问题讨论】:

System.out.println ("The index is " + y); 你的数组没有排序。 你没有打印任何东西!使用 System.out.println() 函数来打印你的结果。 您的问题源于对 Java 最基本的误解,建议您查看您的笔记/书籍/教程。你可以在这里找到教程:The Really Big Index 谢谢@ScaryWombat 【参考方案1】:

为了在输出中打印一些东西,你必须使用 System.out.println() 函数。答案返回到变量 y。只需将变量打印到控制台输出。此外,数组没有排序。但是,这对它没有任何问题。

【讨论】:

【参考方案2】:

类似这样的:

import java.util.Arrays;

public class ArrayTest 

    public static void main(String[] args) 
        int[] x = 12, 8, 6, 23, 6, 5, 17, 20, 9;
//      Arrays.sort(x);
        int y = linearSearch(x, 23);
        System.out.println("" + y);
//      int z = Arrays.binarySearch(x, 23);
//      System.out.println("" + z);
    

    public static int linearSearch(int[] ar, int value) 
        for (int i = 0; i < ar.length; i++) 
            if (ar[i] == value) 
                return i;
            
        
        return -1;
    


注意注释掉的行是为了如果你真的想要一个排序的数组而不是一个未排序的数组

【讨论】:

以上是关于对有序数组进行线性搜索的java实现的主要内容,如果未能解决你的问题,请参考以下文章

有序线性表(存储结构数组)--Java实现

有序数组中线性搜索的复杂度分析

算法常见数组搜索算法

经典面试算法题:线性查找有序二维数组

1287. 有序数组中出现次数超过25%的元素『简单』

Java 实现有序链表