Chinaunix首页 | 论坛 | 博客
  • 博客访问: 16208
  • 博文数量: 29
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 10
  • 用 户 组: 普通用户
  • 注册时间: 2015-08-14 08:56
文章分类
文章存档

2016年(2)

2015年(27)

我的朋友
最近访客

分类: Java

2015-08-14 08:59:46


点击(此处)折叠或打开

  1. /******************************************************
  2.  * @package
  3.  * @file Test.java
  4.  * @author Shengwuya(shengwuya@gmail.com)
  5.  * @date 2012-5-4 下午5:00:33
  6.  * @version 1.0
  7.  * @brief 改写的二分查找算法
  8.  * 当x在数组中时,ind[0]=ind[1]=middle,返回x的位置
  9.  * 当x不在数组中时,ind[0]返回小于x的最大元素位置
  10.  * ind[1]返回大于x的最小元素的位置
  11.  ******************************************************/
  12. public class Test{
  13.     public static boolean binarySearch(int[] a, int x, int left, int right, int[] ind){
  14.         int middle;
  15.         while(left < right){
  16.             middle = (left+right)/2;
  17.             if(x == a[middle]){
  18.                 ind[0] = ind[1] = middle;
  19.                 return true;
  20.             }
  21.             else if(x > a[middle])
  22.                 left = middle +1;
  23.             else
  24.                 right = middle -1;
  25.         }
  26.         ind[0] = right;//小于x的最大元素位置

  27.         ind[1] = left; //大于x的最小元素的位置

  28.         return false;        
  29.     }    
  30.     public static void main(String[] args){
  31.         int arr[] = {1,2,4,5};
  32.         int ind[]={-1,-1};
  33.         binarySearch(arr, 3, 0, 3,ind);
  34.         System.out.println(ind[0]);
  35.         System.out.println(ind[1]);
  36.     }
  37. }

阅读(119) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~