您的位置:首页 > 其它

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

2015-03-09 00:38 260 查看
顺序:

        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        是

顺序查找适合小型问题

二分插入很慢
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐