• Java顺序查找、二分查找


    Java顺序查找、二分查找

      查找算法中顺序查找算是最简单的了,无论是有序的还是无序的都可以,只需要一个个对比即可,但其实效率很低。

    顺序查找

    动图演示

    顺序查找

    详细代码

          // 顺序查找
          public static boolean search(int[] arrray, int key) {
    		for (int i = 0; i < arrray.length; i++) {
    			if (arrray[i] == key) {
    				return true;
    			}
    		}
    		return false;
    	}
    

    二分查找

      二分法查找适用于大的数据,但前提条件是数据必须是有序的,他的原理是先和中间的比较,如果等于就直接返回,如果小于就在前半部分继续使用二分法进行查找,如果大于则在后半部分继续使用二分法进行查找。

    动图演示

    二分查找

    详细代码

          // 非递归
    	public static boolean binarySearch1(int[] array,int key) {
    		int low = 0;
    		int high = array.length-1;
    		while(low <= high) {
    			int middle = low + (high-low)/2;
    			if(key==array[middle]) {
    				return true;
    			}
    			if(key>array[middle]) {
    				low = middle + 1;
    			}
    			if(key<array[middle]) {
    				high = middle - 1;
    			}
    		}
    		return false;
    	}
    	// 递归
    	public static boolean binarySearch2(int[] array,int key) {
    		int low = 0;
    		int high = array.length - 1;
    		Arrays.sort(array); // 排序
    		return Search(array,key,low,high);
    	}
    	public static boolean Search(int[] array,int key,int low,int high) {
    		int mid = low + (high - low)/2;
    		if(low>high) {
    			return false;
    		}
    		if(key == array[mid]) {
    			return true;
    		}
    		if(key>array[mid]) {
    			return Search(array,key,mid+1,high);
    		}
    		return Search(array,key,low,mid-1);
    	}
    
    
  • 相关阅读:
    OpenStack trove原理及配置实践
    [转]在首席架构师手里,应用架构如此设计
    Servlet入门(一),超级详细!!!看完就会!!!!
    Redis入门
    Linux笔记02—Linux进阶应用
    Linux笔记01—linux基础入门
    Linux笔记00—计算机概论
    Linux上安装jdk
    SpringBoot入门
    排查问题的五个步骤
  • 原文地址:https://www.cnblogs.com/lyhLive/p/13334699.html
Copyright © 2020-2023  润新知