zoukankan      html  css  js  c++  java
  • 二分查找算法

    1.二分查找又称折半查找,它是一种效率较高的查找方法。

     二分查找的要求:1.必须采用顺序存储结构

             2.必须按关键字的大小有序排列

    package com.hanqi.L;
    
    public class BinarySearch {
    /***
     * 二分查找算法
     * 
     * @param srcArray有序数组
     * @param key 查找元素
     * @param key的数组下标,没找到返回-1
     */
        public static void main(String[] args) {
            // TODO 自动生成的方法存根
            int[]srcArray=new int[]{3,5,11,17,21,23,28,30,32,50,64,78,81,95,101};
            System.out.println(binSearch(srcArray,0,srcArray.length-1,81));
        }
         // 二分查找递归实现   
        public static int binSearch(int srcArray[], int start, int end, int key) {   
            int mid = (end - start) / 2 + start;   
            if (srcArray[mid] == key) {   
                return mid;   
            }   
            if (start >= end) {   
                return -1;   
            } else if (key > srcArray[mid]) {   
                return binSearch(srcArray, mid + 1, end, key);   
            } else if (key < srcArray[mid]) {   
                return binSearch(srcArray, start, mid - 1, key);   
            }   
            return -1;  
           
        } 
        // 二分查找普通循环实现   
        public static int binSearch(int srcArray[], int key) {   
            int mid = srcArray.length / 2;   
            if (key == srcArray[mid]) {   
                return mid;   
            }   
      
            int start = 0;   
            int end = srcArray.length - 1;  
            while (start <= end) {   
                mid = (end - start) / 2 + start;   
                if (key < srcArray[mid]) {   
                   end = mid - 1;   
                } else if (key > srcArray[mid]) {   
                    start = mid + 1;   
                } else {   
                    return mid;   
                }   
            }   
            return -1;   
    }
    }

     转自风不可追的网易博客

  • 相关阅读:
    语法树,短语,直接短语,句柄2.0
    语法树,短语,直接短语,句柄
    2.理解文法和语文
    编译原理的学习 No.1
    第一次个人编程作业
    Arduboy基本操作(二)
    Arduboy基本用法(一)
    物理存储管理实训题
    创建和管理用户作业
    PL/SQL语言基础
  • 原文地址:https://www.cnblogs.com/miracle-0807/p/5869652.html
Copyright © 2011-2022 走看看