美文网首页java基础
JAVA二分法排序

JAVA二分法排序

作者: 山顶冻人0 | 来源:发表于2017-10-26 17:31 被阅读0次

    二分法查找
    1.二分法查找是建立在已经排序的基础之上的。
    2.以下程序分析从小到大排序。
    3.这个数组中没有重复的元素.

      1 3 5 9 11 13 56
        
        以上是一个已经排好序的int类型的数组,要求快速找出13这个元素的下标。
        
        1 3 5 9 11 13 56
        
        int begin = 0;
        int end = 6;
        int mid = 3;
        中间元素是9, 9<13
        
        begin = mid + 1;  4
        end = 6;
        mid = 5;
        中间元素是13.  13==13
    
    public class MyArrays{
        
        public static void main(String[] args){
            
            int[] a = {1,3,4,5,7,8,9,10,23,25,29};
            
            int destElement = 1;
            
            //要求从a数组中查找10这个元素的下标
            int index = binarySearch(a,destElement); //如果找到则返回元素的下标,如果找不到统一返回 -1
            
            System.out.println((index==-1)? destElement + "元素不存在!":destElement + "在数组中的下标是:" + index);
            
        }
        
        
        //折半查找的核心算法
        public static int binarySearch(int[] a,int destElement){
            
            int begin = 0;
            int end = a.length-1;
            
            
            
            while(begin <= end){
                
                int mid = (begin + end)/2;  
                
                if(a[mid]==destElement){
                    return mid; 
                }else if(a[mid]>destElement){
                    end = mid - 1;
                }else if(a[mid] < destElement){
                    begin = mid + 1;
                }
            }
            
            return -1;
            
        }
        
    }
    

    阳哥二分法

    int max,min,mid;
    min = 0;
    max = p.length;
    mid = (min+max)/2;
    
    while(p[mid]!=key){
        if(key>p[mid]){
            min =mid+1;
        }else if(key<p[mid]){
            max = mid-1;
        }
        if(max<min)
        return -1;
        mid =(max+min)/2;
    }
    return mid;
    

    相关文章

      网友评论

        本文标题:JAVA二分法排序

        本文链接:https://www.haomeiwen.com/subject/onbkpxtx.html