ITPub博客

首页 > 大数据 > Hadoop > java语言实现数组搜索

java语言实现数组搜索

Hadoop 作者:hehui8610 时间:2012-12-12 12:49:00 0 删除 编辑

数据量很大适宜采用该方法。采用二分法查找时,数据需是排好序的。 基本思想:假设数据是按升序排序的,对于给定值x,从序列的中间位置开始比较,如果当前位置值等于x,则查找成功;若x小于当前位置值,则在数列的前半段中查找;若x大于当前位置值则在数列的后半段中继续查找,直到找到为止。

方法/步骤

  1. 1

    首先打开eclipse

  2. 2

    新建一个java项目,名字随意起

  3. 3

    名字起好后,点击完成

  4. 4

    右键点击项目名称,新建,类

  5. 5

    类的名字叫TextArraySearch

    包的名字叫 com.zf.s2

    点击完成

  6. 6

    首先声明一个包,导入类

    package com.zf.s2;//创建一个包

    import java.util.Arrays;


  7. 7

    运用递归和二分法搜索数组元素的类

    public class TextArraySearch {

    //运用递归和二分查找特定整数在整型数组中的位置

    public static int binarySearch1(int[] array, int index, int beginIndex,

    int endIndex) {

    int midIndex = (beginIndex + endIndex) / 2;

    if (index < array[beginIndex] || index > array[endIndex]

    || beginIndex > endIndex)//判断要搜索的数字是否合理

    return -1;

    if (index < array[midIndex]) {//搜索数字位于数组前半部分

    return binarySearch1(array, index, beginIndex, midIndex - 1);//运用递归

    } else if (index > array[midIndex]) {//搜索数字位于数组后半部分

    return binarySearch1(array, index, midIndex + 1, endIndex);//运用递归

    } else {

    return midIndex;//搜索数字位于数组中间

    }

    }


  8. 8

    运用非递归和二分查找特定整数在整型数组中的位置

    public static int binarySearch2(int[] array, int index) {

    int beginIndex = 0;//起始位置,指的是元素下标

    int endIndex = array.length - 1;//结束位置

    int midIndex = -1;

    if (index < array[beginIndex] || index > array[endIndex]

    || beginIndex > endIndex)//判断要搜索的数字是否合理

    return -1;

    //循环判断,根据起始位置与结束位置是否相等

    while (beginIndex <= endIndex) {

    midIndex = (beginIndex + endIndex) / 2;//获得数组中间位置

    if (index < array[midIndex]) {//搜索数字位于数组前半部分

    endIndex = midIndex - 1;//重新定位结束位置

    } else if (index > array[midIndex]) {//搜索数字位于数组后半部分

    beginIndex = midIndex + 1;//重新定位起始位置

    } else {

    return midIndex;//搜索数字位于数组中间

    }

    }

    return -1;

    }


  9. 9

    主函数

    public static void main(String []args){//java程序的主入口处

    int []array=new int[]{12,3,2,18,24,15,20};//声明数组并初始化

    int number=18;//声明变量

    int num=1;

    Arrays.sort(array);//二分法搜索元素之前必须对数组进行排序

    System.out.println("元素"+number+"所在的位置在:"+binarySearch1(array,number,0,array.length-1));

    System.out.println("元素"+number+"所在的位置在:"+binarySearch2(array,number));

    System.out.println("元素"+num+"所在的位置在:"+binarySearch2(array,num));


    }

    }


  10. 10

    运行结果

    END

来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/22700729/viewspace-1112356/ ,如需转载,请注明出处,否则将追究法律责任。

上一篇: 没有了~
下一篇: 没有了~
请登录后发表评论 登录
全部评论

注册时间:2009-10-13