欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

查找算法:顺序查找思想及实现示例

程序员文章站 2024-03-20 10:50:04
...

查找算法思想

如果查找到相应的数据项,往往需要返回该数据项的地址或者位置信息。这样。程序中可以通过位置信息来显示数据项、插入数据项、删除数据项等操作。

如果没有查找到相应的数据项,则可以返回相应的提示信息。

在实际应用中,针对不同的情况往往可以选择不同的查找算法。对于无顺序的数据,只有逐个比较数据,才能找到需要的内容,这称为顺序查找。对于有顺序的数据,也可以采用顺序查找法逐个比较,但还可以采用更快速的方法来找到所需的数据。另外,对于一些特殊的数据结构,如链表、树结构和图结构等,其都有对应的查找算法。

顺序查找算法思想

从数据序列中的第一个元素开始,从头到尾依次逐个查找,直到找到所要的数据或搜索完整个数据序列。

顺序查找主要针对少量的、无规则的数据。对于包含n个数据的数据序列,使用顺序查找方法查找数据,最理想的情况是目标数据位于数组的第一个,这样比较1次就能找到目标数据。而最差的情况是需比较完所有的n个数据才能找到目标或者确认没有该数据。平均来说,比较次数为 n/2 次,其效率比较差。

顺序查找算法示例:

    int searchFun(int[] a,int x) {
        for(int i = 0; i < a.length; i ++) {
            if(a[i] == x) {
                return i;
            }
        }
        return -1;
    }

顺序查找算法实例:

public class SearchFun {
    // 顺序查找算法
    private static final int NUM = 10;

    public static int searchFun(int[] a,int x) {
        for(int i = 0; i < a.length; i ++) {
            if(a[i] == x) {
                return i;
            }
        }
        return -1;
    }

    public static void print(int[] a){
        for(int i = 0; i < a.length; i++) {
            System.out.print(a[i] + " ");
        }
        System.out.println();
    }

    public static void main(String[] args) {
        int[] array = new int[NUM];
        for(int i = 0;i < array.length; i++) {
            array[i] = (int)(100 + Math.random()*100);
        }
        System.out.println("***顺序查找算法演示***");
        System.out.print("数据序列为:");
        print(array);
        System.out.print("请输入要查找的数:");
        Scanner sc = new Scanner(System.in);
        int target = sc.nextInt();
        int index = searchFun(array,target);

        if(index == -1){
            System.out.printf("没找到数据:%d%n",target);
        }else {
            System.out.printf("数据:%d位于数组的第%d个元素处",target,index + 1);
        }
    }
}

运行代码结果如下:

***顺序查找算法演示***
数据序列为:116 105 155 134 140 131 139 171 100 108 
请输入要查找的数:140
数据:140位于数组的第5个元素处