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);
        }
    }
  • 相关阅读:
    陈应松《母亲》
    黄灯:一个农村儿媳眼中的乡村图景
    喝完茶为什么嘴里是甜的
    俗语一千条
    XtraBackup完整备份与增量备份的原理
    李嘉诚:90%考虑失败 关注细节
    redo和undo的区别
    tar命令
    自增锁引发的悲剧
    各版本 MySQL 并行复制的实现及优缺点
  • 原文地址:https://www.cnblogs.com/T8881/p/9432771.html
Copyright © 2011-2022 走看看