前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >顺序查找算法加优化

顺序查找算法加优化

作者头像
阮键
发布2020-07-13 09:56:31
3870
发布2020-07-13 09:56:31
举报

网上看了一部分代码,很多写的比较乱,代码也不全,现在整理了一下代码以便学习

顺序查找算法比较简单,在一个线性表中,按照从前往后或者从后往前的顺序依次查找,如果查找到关键字和给定值相等,则返回给定值的位置,查找成功;如果查找值最后一个元素仍未找到,则查找失败。

代码语言:javascript
复制
package find;

import java.util.Scanner;

public class shunxu {
    public static void main(String[] args) {
        int[] a={1,2,3,5,7,9,10,11,12,11};
        int n=a.length;
        System.out.println("请输入想要查找的数值:");
        Scanner sc=new Scanner(System.in);
        int key=sc.nextInt();
        int s=Sequential_Search(a,n,key);
        if(s==0){
            System.out.println("没有这个数据");
        }else{
            System.out.println("查到数据为第"+s+"个数");
        }
    }
    /*顺序查找,a为数组,n为要查找的数组长度,key为要查找的关键字*/
    private static int Sequential_Search(int a[],int n,int key)
    {
        int i;
        for(i=0;i<n;i++)
        {
            if(a[i]==key){

                return i+1;
            }
        }
        return 0;
    }
}

有一种改进的算法,引入了哨兵的思想,所谓哨兵就是将关键字用一个数组位置去存储,保证在循环的过程中不必判断数组是否越界,因为执行到最后一个元素时,一定会跳出循环。在一定程度上优化了普通查找算法。

代码语言:javascript
复制
package find;

import java.util.Scanner;

public class shunxu2 {
    public static void main(String[] args) {
        int[] a={1,2,3,5,7,9,10,11,12,11};
        int n=a.length;
        System.out.println("请输入想要查找的数值:");
        Scanner sc=new Scanner(System.in);
        int key=sc.nextInt();
        int s=Sequential_Search(a,n,key);
        if(s==0){
            System.out.println("没有这个数据");
        }else{
            System.out.println("查到数据为第"+s+"个数");
        }
    }
    /*有哨兵顺序查找*/
    private static int Sequential_Search(int a[],int n,int key)
    {
        int i;
        a[0]=key;//设置a[0]为关键字值,称为哨兵
        i=n-1;       //循环从数组尾部开始
        while (a[i]!=key){
            i--;
        }
        return i+1;
    }
}
本文参与 腾讯云自媒体分享计划,分享自作者个人站点/博客。
原始发表:2020-07-09 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档