最近没有管理好自己的情绪,哎...
上班之余,研究一下算法也不错,本人比较喜欢数学,只要被让我被英文单词怎么都好,哈哈,研究算法算是本人的小爱好吧,做好每天从头开始的准备,从头开始,今天就从二分查找开始.
二分查找又称折半查找,查找的速度比较快,次数比较少,性能比较好,但是二分查找一般是对已经排过序的进行查找,相对来说插入和删除比较不好操作.今天就以一个小的例子来研究一下二分查找
已知数组data={12,14,18,23,26,27,33,45,66,78,98},使用二分法查找98所在的位置:
下面是我写的代码进攻参考,你也可以使用其他方法,当然这里既然说的是二分查找,你就别用那种挨个比较的方法了.
package com.sd.thea.guo; /** * @author 子墨 * * 2015-2-1下午5:00:31 */ public class BinarySearch { /** * @param goal 查找的目标数 * @param data 查找的数组 * @return */ public static int rank(int goal, int[] data) { int start = 0; int end = data.length - 1; while (start <= end) { int mid = start + (end - start) / 2; if (goal<data[mid]) { end=mid-1; }else if (goal>data[mid]) { start=mid+1; }else { return mid; } } return -1; } /** * @param args */ public static void main(String[] args) { int[] data={12,14,18,23,26,27,33,45,66,78,98}; System.out.println(rank(98, data)); } }
简单介绍一下rank()方法,先获得中间下标,如果中间数比要找的数值大,继续查找左半段,否则查找右半段,如果输出的是-1,说明没有找到!
算法是本人的爱好,后续继续更新,从最简单的开始,还有就是本人用Java实现的,你也可以用C等,这个随意...共同交流,一起进步
时间: 2024-10-12 22:59:51