二叉树查找简单算法

public static int getIndex(int[] arr,int value){
		# 定义最大索引,最小索引
		int max = arr.length - 1;
		int min = 0;
		# 计算中间索引
		int mid = (min+max)/2;
		# 中间索引的值和要查找的值进行比较
		while(arr[mid] != value){
				if(arr[mid] > value){
						max = mid - 1;
				}elseif(arr[mid] < value){
						min = mid + 1;
				}
				if(min > max){
						return -1;
				}
				mid = (min+max)/2;
		}
		return mid;
}

二叉树查找算法
1、二分查找算法是在有序数组中用到的较为频繁的一种算法,二分查找算法则更优
2、在未接触二分查找算法时,最通用的一种做法是,对数组进行遍历
3、譬如数组{1, 2, 3, 4, 5, 6, 7, 8, 9},查找元素6,用二分查找的算法执行的话,其顺序为:
第一步:查找中间元素,即5,由于5<6,则6必然在5之后的数组元素中,那么就在{6, 7, 8, 9}中查找;
第二步:寻找{6, 7, 8, 9}的中位数,为7,7>6,则6应该在7左边的数组元素中,那么只剩下6,即找到了。
4、 二分查找算法就是不断将数组进行对半分割,每次拿中间元素和需要查找的元素进行比较。

BinarySearch.php

 $need){
                 $end = $mid - 1;
             }
             #中元素比目标小,查找右部
             if($arr[$mid] < $need){
                 $start = $mid + 1;
             }
         }
    }
}
$BinarySearch = new BinarySearch();
echo $BinarySearch->find(1);

binary_search.php

 $need) {  
            //数组最小数都大于查找数 直接返回false  
            if ($arr[0] > $need) {  
                return false;  
            } 
            // echo '-';
            $ret = binary_search($arr, $need, $begin, $mid_index-1);  
        }else{  
            if ($arr[$end] < $need) {  
                return false;  
            }  
            // echo '+';
            $ret = binary_search($arr, $need, $mid_index+1, $end);  
        }  
        return $ret;  
    }    
?>

你可能感兴趣的:(算法,二叉树)