Java实现二分法排序

发布时间:2017-7-9 7:18:45编辑:www.fx114.net 分享查询网我要评论
本篇文章主要介绍了"Java实现二分法排序 ",主要涉及到Java实现二分法排序 方面的内容,对于Java实现二分法排序 感兴趣的同学可以参考一下。

二分法:(二分法不是只能做数组,这里的数组只是为了举例)

在给出的有序排列的数组中,把目标值和数组中间值进行比较,如果相等,则返回中间值下标,如果目标值小于中间值,就从数组的前半段再次执行二分法查找,如果目标值大于中间值,从数组的后半段开始二分法查找

二分法查找主要是比较的次数少,查找的速度快,平均性能好,但是待查表一定要是有序的,插入删除比较困难,所以二分法查找不适用于经常变动的有序列表.

上代码:

 1 package cn.summerchill.sort;
 2 
 3 public class BinarySearch {
 4     public static void main(String[] args) {
 5         //有序排列数组(大到小,小到大无所谓)
 6         int[] array = {1,2,3,4,5,6,7,8,9,10};
 7         //打印二分法的返回值
 8         System.out.println(searchRecursive(array,0,array.length-1,9));
 9     }
10     public static int searchRecursive(int[] array,int start,int end,int findValue){
11         if(array==null){
12             return -1;
13         }
14         if(start<=end){
15             //中间位置
16             int middle = (start + end)/2;
17             //中值
18             int middleValue = array[middle];
19             if(findValue == middleValue){
20                 //与中值相等就直接返回
21                 //return middle;
22                 return middleValue;
23             }else if(findValue < middleValue){
24                 //目标值小于中值,在中值前面找(这里调用了二分法的方法)
25                 return searchRecursive(array,start,middle - 1,findValue);
26             }else {
27                 //目标值大于中值,在中值后面找($L̪ԌE$L̪Ԍ方法)
28                 return searchRecursive(array,middle + 1,end,findValue);
29             }
30         }else{
31             //返回-1,查找失败
32             return -1;
33         }
34     }    
35 }


上一篇:内核通信之Netlink源码分析-基础架构
下一篇:复旦大学2016--2017学年第二学期(16级)高等代数II期末考试第六大题解答

相关文章

相关评论

本站评论功能暂时取消,后续此功能例行通知。

一、不得利用本站危害国家安全、泄露国家秘密,不得侵犯国家社会集体的和公民的合法权益,不得利用本站制作、复制和传播不法有害信息!

二、互相尊重,对自己的言论和行为负责。

好贷网好贷款