二分搜索的拓展用法

原创 2015年11月18日 15:49:38

二分搜索的拓展用法

二分搜索想必大家比较熟悉了,这里给出两道二分搜索的变形的题目。

<span style="font-size:18px;">public class BinarySearch {
	/*
	 * 题目一:
	 * 给定一个未排序的数组,使用二分搜索的方法查找其中最大的那个数(求最小的方法一样)
	 */
	/**
	 * 
	 * @param a 要查找的最大值所在的数组
	 * @param n 数组的最大范围
	 * @param st 要查找的开始坐标
	 * @param end 要查找的终结坐标
	 * @return 最大值
	 */
	private static int search(int[] a,int n,int st,int end){
		if(n==1){
			return a[st];
		}
		int mid = (st+end)/2;
		int num1 = search(a,n-n/2, st, st+mid);
		int num2 = search(a, n/2,mid+1, end);
		return num1>num2?num1:num2;
	}
	/*
	 * 题目二:
	 * 设a[0:n-1]是已排好序的数组。改写二分搜索算法,使得当搜索元素x不在数组中时,返回小于x的最大元素位置i和大于x的最小元素的位置j。
	 * 当搜索元素在数组中时,i和j相同,均为x在数组中的位置
	 */
	static int i,j;
	/**
	 * 
	 * @param a 已经排好序的数组
	 * @param n 数组中元素的个数
	 * @param x 要查找的数
	 */
	private static void search2(int[] a,int n,final int x){
		int left=0;
		int right = n-1;
		while(left<=right){
			int middle = (left+right)/2;
			if(x==a[middle]){
				i = j = middle;
				return;//找到了该元素即结束查找
			}else if(x>a[middle]){
				i = middle;
				left = middle+1;
			}else{
				j = middle;
				right = middle-1;
			}
		}
	}
	public static void main(String[] args){
		/*************题目一*****************/
		int[] a = {3,1,7,5,9};
		int max = search(a,4, 0, 4);
		System.out.println(max);
		/*************题目二*****************/
		int[] b = {1,4,6,9,13,16};
		search2(b, 6, 8);
		System.out.println("i="+i+" j="+j);
	}
}</span>


版权声明:本文为博主原创文章,未经博主允许不得转载。

NetworkX用法之五——二分图(…

原文地址:NetworkX用法之五——二分图(转)作者:zhengw789二分图又称二部图,是图论中的一种特殊模型,它的顶点可分割为两个互不相交的子集,并且图中的每条边所关联的两个顶点分别属于这两个不...
  • nuoline
  • nuoline
  • 2013年02月25日 18:40
  • 1878

[笔记] grep用法:数量统计和搜索html中的url

[笔记] grep用法:数量统计和搜索html中的url★ 1. 数量统计实例:可以用来统计CVE列表中包含android的问题有多少,包含linux的问题有多少。 例如,CVE问题列表:http:...

Android 搜索框:SearchView 的属性和用法详解

转载请标明出处: http://blog.csdn.net/airsaid/article/details/51087226  本文出自:周游的博客 SearchView简...

高亮显示搜索到的关键字-jquery.highlight.js的用法!

高亮显示搜索到的关键字-jquery.highlight.js的用法!

Android 搜索框:SearchView 的属性和用法详解

SearchView是Android原生的搜索框控件,它提供了一个用户界面,用于用户搜索查询。...
  • Airsaid
  • Airsaid
  • 2016年04月07日 16:55
  • 42409

pkg-config的用法及库搜索路径设置

一、编译和连接         一般来说,如果库的头文件不在 /usr/include 目录中,那么在编译的时候需要用 -I 参数指定其路径。由于同一个库在不同系统上可能位于不同的目录下,用户安装库...

深度优先搜索的用法——求数组部分和

深度优先搜索的用法——求数组部分和   问题主题:求数组部分和 问题描述: 给定整数a1,a2, … an,判断能否从中选出若干个数,使得它们的和为k。 限制...

MySQL LIKE 用法:搜索匹配字段中的指定内容

(转载)http://www.5idev.com/p-php_mysql_like.shtml MySQL LIKE 语法 LIKE 运算符用于 WHERE 表达式中,以搜索匹配字段中的指...

Mysql全文搜索match...against的用法 转自:http://dao.daimaku.com

前提:mysql只支持英文内容的全文索引,所以只考虑英文的全文搜索。假定数据表名为post,有三列:id、title、content。id是自增长序号,title是varchar,content是te...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:二分搜索的拓展用法
举报原因:
原因补充:

(最多只允许输入30个字)