码迷,mamicode.com
首页 > 其他好文 > 详细

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

时间:2015-03-09 01:39:55      阅读:130      评论: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
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!