首页 > 其他 > 详细

查找算法

时间:2014-05-13 20:26:41      阅读:361      评论:0      收藏:0      [点我收藏+]

    顺序查找的时间复杂度是O(n),如果数组一开始是有序的,那么用顺序查找的效率是比较低的,因为二分查找等方式能够拥有更低的时间复杂度,但是如果一开始是无序的,那么顺序查找有可能比其他查找更加的快速。

    二分查找主要是应用在有序的数组织中,采取的是一种分治的思想,先在数组中去中值,然后将中值与查询的值进行比较,如果小,就在左边数组中查询,如果大,就在右边数组中查询,这样就缩小了查询的范围,同时在半个数组中还能进一步进行划分,能够加快查询的速度。

bubuko.com,布布扣
    private static int a[] = {1,2,3,4,5,6,7,8};
    //非递归
     public static void binarySort(int low,int high,int c) {
         int mid =( low+high)/2;
         System.out.println("mid is "+mid+" and a[mid] is "+a[mid]);
         if(c==a[mid]){
             System.out.println("find");
         }else if(c<a[mid]){
             high = mid-1;
             if(low<=high)
             binarySort(low,high,c);
         }else if(c>a[mid]){
             low = mid+1;
             if(low<=high)
             binarySort(low,high,c);
         }
     }
     
     //递归
     public static void binarySorts(int low,int high,int c) {
        while(low<=high){
             int mid =( low+high)/2;
             if(c==a[mid]){
                 System.out.println("find");
                 break;
             }else if(c<a[mid]){
                 high = mid-1;
             }else if(c>a[mid]){
                 low = mid+1;
             }
        }
     }
bubuko.com,布布扣

分别采用递归和非递归的方式进行了实现。

查找算法,布布扣,bubuko.com

查找算法

原文:http://www.cnblogs.com/cjmlovelulu/p/3724309.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!