• 二分法查找和普通方法查找


    一、普通查找

     对于数组和一个需要查找的元素来说,普通查找的原理很简单,即为从数组的第一个元素到最后一个元素进行遍历,如果第i个元素的值等于我们需要查找的值,那么返回找到的角标i,否则返回-1表示没有查找到。这里以java为例,普通查找代码如下:

    public class Array_Search {
    
        public static void main(String[] args) {
            int[] arr1 = {33,19,15,28,106,45,78,13};
            //普通查找
            int index1 = getIndex(arr1,28);
            System.out.println(index1);
        }
        //普通查找,返回值所在的角标,不存在返回-1
        public static int getIndex(int[] arr,int value)
        //value为需要查找的值
        {
            for(int i=0;i<arr.length;i++)
            {
                if(arr[i] == value)
                    return i;
            }
            return -1;
        }
    }

    二、分法查找

      二分法是从中间元素开始查找,假设整型数组为arr,要查找的元素为value,数组中间元素为arr[mid],若value小于arr[mid],则在左半边继续查找;若value大于arr[mid],则在右半边继续查找,如此循环,知道value等于arr[mid],返回的角标mid即为要找的元素的位置。java代码如下:

    public class Array_Search1 {
    
        public static void main(String[] args) {
            int[] arr2 = {13,15,19,28,33,45,78,106};
            //二分法查找
            int index2 = halfSearch(arr2,28);
            System.out.println(index2);
        }
        
        //二分法查找
        public static int halfSearch(int[] arr,int value)
        {
            int min,mid,max;
            min = 0;
            max = arr.length-1;
            mid = (min+max)/2;
            while(arr[mid] != value)
            {
                if(value > arr[mid])
                    min = mid + 1;
                else
                    max = mid - 1;
                if(max < min)
                    return -1;
                mid = (min+max)/2;
            }
            return mid;
        }
    
    }

    三、二分法查找和普通查找的优缺点分析

      •普通查找

      优点:1)原理简单,代码容易实现

            2)不需要数组有序

      缺点:1)当元素个数很多时,效率较低

      •二分法查找

      优点:1)效率比普通查找高

      缺点:1)要求数组必须是有序排列

  • 相关阅读:
    pandas之中文分词,词云,情感分析,语义分析3
    pandas之中文分词,词云,情感分析,语义分析2
    pandas之中文分词,词云,情感分析,语义分析1
    大数据学习之-the king of bigdata
    pandas之分组聚合(agg,apply)
    pandas之表的长宽转换
    Pandas数据规整之合并
    Pandas之数据规整
    Pandas数据规整
    IP协议那些事
  • 原文地址:https://www.cnblogs.com/jack1989/p/7808665.html
Copyright © 2020-2023  润新知