zoukankan      html  css  js  c++  java
  • 基于有序表的折半查找法

      二分查找法(binary search)也称为折半查找法,用来查找一组有序的记录数组中的某一记录,其基本思想是:将记录按有序化(递增或递减)排列,在查找过程中如果要找的元素值小于该中点元素,则将待查序列缩小为左半部分,否则为右半部分。通过一次比较,将查找区间缩小一半。

    php实现二分查找算法: 1 <?php 2 $arr = array(10,15,18,21,23,24,28);

     3 function binarySearch($arr,$value){
     4     $low=0;
     5     $high = sizeof($arr)-1;
     6     while($low<=$high){
     7         $mid = ceil(($low+$high)/2);
     8         if($arr[$mid]>$value){
     9             $high = $mid-1;
    10         }elseif($arr[$mid]<$value){
    11             $low = $mid+1;
    12         }else{
    13             return $mid;
    14         }
    15     }
    16     return -1;
    17 }
    18 19 echo binarySearch($arr,24); 20 ?>

     java实现:

    /*基于有序表的折半查找法*/
    public class SearchFile{
        
        public static int search(int a[],int e){
            int low =0,high=a.length-1;
            while(low<=high){
                int mid=(low+high)/2;
                if(e==a[mid]){    //如果在mid位置找到就返回
                    return mid;
                }else{
                    if(e>a[mid]){    
                        low=mid+1;    //将中位的下一位指针赋给low
                    }else{
                        high=mid-1;//将中位的前一位指针赋给high
                    }
                }
            }
            return -1;
        }
        public static void main(String args[]){
            int a[]={1,2,3,3,4,5,5,6,7,8,9,523,3400,5600};
            int index=search(a,523);
            System.out.println(index);
        }
    }
  • 相关阅读:
    Eclipse启动不了
    第三章Hibernate关联映射
    System Generator简介
    Chipscope使用
    总线及数据传输技术【待完善】
    多相滤波器
    notepad++与ISE/Vivado关联
    常用IP核
    〖Linux〗Qt+gsoap开发客户端程序,服务端地址设定的字符串转换处理
    〖Android〗OK6410a的Android HAL层代码编写笔记
  • 原文地址:https://www.cnblogs.com/T8881/p/9432771.html
Copyright © 2011-2022 走看看