首页 > 其他 > 详细

查找一,基于ST的顺序与二分 总结关键字

时间:2015-03-09 01:38:41      阅读:282      评论:0      收藏:0      [点我收藏+]

顺序:

        for(Node x = first; x !=null,x=x.next){

          if(key.equals(x.key))

          {

          return x.val;(x.val = val;)

            }  

      }

 

二分:  (基于有序数组)

    迭代  

        rank

        int mid ;

        int cmp;

        while(lo>=hi){

          mid = lo+(hi-lo)/2;

          cmp =  key.compareTo(keys[mid]);

          if(cmp <0)  hi=mid-1;

          else if (cmp>0) lo = mid +1;

          else return mid;

 

        }return lo;

    递归:

        rank(Key key,int lo ,int hi){

      

           mid = lo+(hi-lo)/2;

          cmp =  key.compareTo(keys[mid]);

          if(cmp <0)  rank(key, lo, mid-1);

          else if (cmp>0)  rank(key, mid+1,hi);

          else return mid;

}

 

 

比较

              最坏情况下的成本    平均情况下的成本      是否高效低支持有序性的相关操作

              查找       插入     查找       插入

顺序查找(无序链表)     N     N      N/2    N          否

二分查找(有序数组)     lgN    2N      lgN   N        是

 

 

顺序查找适合小型问题

二分插入很慢

查找一,基于ST的顺序与二分 总结关键字

原文:http://www.cnblogs.com/ykong/p/4322623.html

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