java二分查找
二分查找:
二分查找比线性查找数度要好很多,尤其是对大数组来说更为显著,就像是猜字游戏一样
猜字游戏:
二分查找的方法和我们小时候玩的猜字游戏是一样的。在这个游戏里面,有一个小朋友会让你猜她正在想的一个1至100之间的数,
你猜了一个数以后,她会告诉你三种选择中的一个:你猜的比她想的小,或者大了,或者猜对了。
为了能用最少的次数开始猜对,必须从50开始猜,如果她说你猜的太小,则推出那个书在51至100之间,所以下一次猜的是75(51至100的一般)。如果她说你猜得有点大了,则数在(1-49)之间,所以下一次猜25.
每一次猜都会将可能的值划分成两部分。最后范围会缩小到一个数字那么大。不多说。看程序
/**
* @author licheng
* @function 二分查找
*
* */
package com.licheng.array;
public class BinarySearch {
/**
* @author licheng
* *二分查找特定整数在整型数组中的位置(递归)
* @param dataSet(查找的数组)
* @param data(查找的数据)
* @param beginIndex(开始下标)
* @param endIndex(结束下标)
* @return 数据所在下标
*
* */
public int binarySearch(int [] dataSet, int data, int beginIndex, int endIndex) {
//如果查找的数要比开始索引的数据要小或者是比结束索引的书要大,或者开始查找的索引值大于结束的索引值返回-1没有查到
int minIndex = (beginIndex + endIndex)/2;
if (beginIndex > endIndex || data < dataSet[beginIndex] || data > dataSet[endIndex]) {
return -1;
}
if (data > dataSet[minIndex]) {
return binarySearch(dataSet, data, minIndex+1, endIndex);
} else if (data < dataSet[minIndex]) {
return binarySearch(dataSet, data, beginIndex, minIndex-1);
} else {
return minIndex;
}
}
/**
*二分查找特定整数在整型数组中的位置(非递归)
*@param dataset
&
相关文档:
大学的时候选修过一个学期日语,当时日语老师对我们说:“对于中国人来讲,学习英语一般是哭着进去,笑着出来;学习日语则是笑着进去,哭着出来”。意思就是说学习英语的时候,入门的时候比较困难,但是只要坚持学下去,转变了汉语的思维习惯时,最近可以把英语学得很好。而日语不同,一方面因为其与汉语的紧密关 ......
Java执行stm.executeQuery(sql); 时总是提示:java.sql.SQLException: ORA-00911: 无效字符,弄了半天还是出错,无奈,拿出杀手锏,Google一下,晕倒,发现我的String sql = “select detail from test.result where person_id = 4; ",貌似没错误吧,结果我我必须去掉最后分号,本来是想搞得专业点,就价加个分 ......
这不是什么教材,笔者有时会在论坛上瞧瞧,看到不少初学者问到很多问题,这些问题是java程序员应该懂得的,而一般书上不会讲到或者一笔带过的知识。因此斗胆涂鸦一篇文章,把想说的在这里一口气说完。这也是本人第一次写技术性的文章,文笔不畅之外,还请各位见谅。
首先讲清楚类和对象的区别。
类是广泛的概念,表示一个 ......
常见的JAVA程序包括以下类别:
*直接在console上运行的类(包括可视化界面的类)
*JSP代码类(注:JSP是Servlets类的变型)
*Servelets类
*EJB类
*其它不可以直接运行的支持类
这些类文件中,都有可能含有中文字符串,并且常用前三类JAVA程序和用户直接交互,用于输出和输入字符,如:在JSP和Servlet中得到客户 ......
1.编程界最著名的一句话“Hello world!”,任何一个程序员起步时必遇的语句
public class HelloWorld {
public static void main(String[] args) {
// TODO Auto-generated method stub
System.out.print("Hello World!");
......