关于折半法查找的一些总结以及ArrayList类的总结

Posted roseneverdie

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了关于折半法查找的一些总结以及ArrayList类的总结相关的知识,希望对你有一定的参考价值。

一.折半法查找的总结(这算法很好理解,但我花了好久琢磨他有啥用.....)

1.实际意义

     折半法查找主要是为了能够很快在一个数组中找出我们所需要的那个元素,与往常我们通过一个一个比较的方法不同,折半法大大减少了比较的次数,加快了效率,并且感觉在生活中也是有实际意义的,数组中元素少的时候当然看不太出来,但是若是有一个很大的数组,这种算法就很省事了。

2.注意事项

   1.必须是顺序排序的一个数组,若不是我们需通过自己所学排序算法排一下

3.算法图解(定义一个数组a[])

技术分享图片

 

     这里我用的箭头相当于指针,感觉指针在数组中用的真是多。

     min相当于指向最小的0索引,max指向最大的索引

     mid=(max+min)/2指向这个公式所计算出的索引

     如果我们要查找的是15的话

    1.算出mid     2.将a[mid]和所要查找的元素比(当总索引数为奇数时,不保留小数)

     3.如果a[mid]大于15

技术分享图片

 

        就只剩下这些了,因为是顺序排序所以后面那些就被淘汰了,再次找mid最后若是找到了返回值即可(虽然我们一直在改变max,min所指向的元素但是数组中的索引数,以及元素的位置是不会变的。)小于那种情况其实也一样。

    4.代码

package asdf;

public class Research_By_Half {
               
    public  static int research(int arr[],int num)
    {
        int max=arr.length-1;
        int min=0;
        int mid=0;
        while(arr[min]<=arr[max])
        {
            mid=(max+min)/2;
            if(arr[mid]<num) 
            {
                min=mid+1;
            }
            else if(arr[mid]>num)
            {
                max=mid-1;
            }else 
            {
                return  mid;
            }
        }
        return -1;
    }
    public static void main(String[] args) {
        int a[]= {1,2,5,8,45,99};
        int b=research(a,45);
        System.out.println(b);
    }

}

二.ArrayList类的使用

1.创建ArrayList类型变量时格式是(ArrayList<>  (变量名)=new ArrayList<>())

2.用法

    1.add()给集合添加元素

          1.add(元素)就是添加     2.add(int 索引,元素)替换原位置元素并添加

    2.size()查看集合长度

    3.get()取出集合中某个元素.

    4.set(int 索引,元素)  用于修改

    5.clear()清空集合



以上是关于关于折半法查找的一些总结以及ArrayList类的总结的主要内容,如果未能解决你的问题,请参考以下文章

C++折半查找法

数据结构50:二分查找法(折半查找法)

c语言折半查找法

C语言之实现函数返回一个数组,以及选择排序,还有折半查找。这是同学的一个作业。。。

用递归法写一个折半查找的算法

算法篇——二分查找法(折半查找法)