11-咸鱼学Java-简单二分查找

19人阅读 评论(0) 收藏 举报
分类:

代码

/**
 * 二分查找
 * @author 焦焱
 *
 */
public class binarySearch {
    /**
     * 查找函数
     * @param a int型的数组
     * @param x 需要查找的数
     * @return 如果找到返回下标,没找到返回-1
     */
    public static int fun(int a[],int x)
    {
        int left = 0;           //左标记
        int right = a.length-1; //右标记

        while(left<=right)      //在left>right的时候说明已经查找完了
        {   
            int mid = (left+right)>>>1; //找到中间下标
            if(a[mid]>x)                //用最中间的数和要查找的数进行比较
                right = mid-1;          //如果中间数大于x则说明要查找的数应该在数组的左边,切换标记
            else if(a[mid]<x)
                left = mid+1;           //如果中间数大于x则说明要查找的数应该在数组的右边,切换标记
            else
                return mid;             //如果mid下标的数等于x则已经找到,直接return
        }
        return -1;                      //如果循环完毕还没找到,说明没找到,直接返回-1
    }
public static void main(String[] args) {
    int[] a  = {1,2,3,4,5,6,7};
    int x = fun(a, 3);
    System.out.println(x);
}
}

图解
当能查找的的时候
这里写图片描述
其原理是运用了夹逼法,因为其排序的都是有序数列,所以你要查找的值如果大于一个数,小于另一个数,那么这个数肯定就在那两个数的范围里面,运用这种思想,就可以查找的你需要查找的数。
此函数和排序算法合二为一就可以做出排序查找。

查看评论

8-咸鱼学Java-冒泡排序算法优化

先上代码 import java.util.Arrays; public class maopaoyouhua { public static void maopao(int[] a)...
  • qq_38345606
  • qq_38345606
  • 2018-04-12 23:24:39
  • 10

9-咸鱼学Java-一些例题

1.如何排序数组并搜索某个元素,返回下标? package homework; public class one { public static int maopaoSele...
  • qq_38345606
  • qq_38345606
  • 2018-04-13 01:08:08
  • 31

1-咸鱼学Java-第一个Java程序

ps:请先配置好Java环境,jdk可以从Java官网进行下载http://www.oracle.com/technetwork/java/javase/downloads/jdk8-download...
  • qq_38345606
  • qq_38345606
  • 2018-03-29 01:00:41
  • 114

简单的二分查找条件

NIL
  • bluefly123
  • bluefly123
  • 2017-02-02 21:48:20
  • 493

C例子:二分查找法

  • 2015年07月27日 21:42
  • 1KB
  • 下载

iphone 咸鱼图片动画

  • 2015年10月04日 19:23
  • 184KB
  • 下载

C语言实现 二分查找 支持降序和升序

// Test2.cpp : Defines the entry point for the console application. // #include "stdafx.h" ...
  • diaoguangqiang
  • diaoguangqiang
  • 2013-11-27 23:18:48
  • 773

java-二分查找

二分查找也叫折半查找,前提是数组是有序数组,下面来分析原理。如果一个数组:int arr[] = {1,2,3,4,5,6};要查找1所在的索引值,那么先确定最大索引值maxIndex和最小索引值mi...
  • u010435203
  • u010435203
  • 2016-05-23 23:08:22
  • 235

简单回合制小游戏

一个简单的回合制游戏,设定两个阵营5名角色。灰太狼与喜羊羊、懒洋洋、美羊羊以及暖羊羊。 (初始设定:灰太狼血量为100,四只羊的血量分别是50,60,45,40) 小羊只有普通攻击造成3点伤害。灰...
  • suocaiy
  • suocaiy
  • 2017-07-28 20:33:18
  • 289

用java实现的简单的二分查找算法

一、什么是二分查找 二分查找又称折半查找,优点是比较次数少,查找速度快,平均性能好;其缺点是要求待查表为有序表,且插入删除困难。因此,折半查找方法适用于不经常变动而查找频繁的有序列表。首先,假设...
  • wyc_cs
  • wyc_cs
  • 2016-06-23 13:30:24
  • 1754
    个人资料
    专栏达人 持之以恒
    等级:
    访问量: 4619
    积分: 690
    排名: 7万+
    博客专栏
    文章存档
    最新评论