游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1828|回复: 0

折中法,查询算法

[复制链接]

88

主题

1125

帖子

1136

积分

金牌会员

Rank: 6Rank: 6

积分
1136
QQ
发表于 2010-8-21 00:14:00 | 显示全部楼层 |阅读模式
发现数组(集合)中查询使用折中算法比较好。
因为,数据库能提供排序功能。
元素顺序排列的数组(集合)  可以非常方便的使用折中查找法。

参数描述:
          int array[] :被查找数组
          int n  :被查找数组元素个数
          int key  :被查找的关键值
         返回值:
          如果没有找到: sq_Dichotomy_Search0 = -1
          否则:   sq_Dichotomy_Search0 = key数组下标
private int schList(List<MapObj> list,int key){
         int low,high,mid;
         low = 0;
         high = list.size() - 1;
         while(low<=high){
          mid = (high+low)/2;
          if(list.get(mid).getId() == key)
           return(mid);
          /*key>array[mid] 表明要求查找的值在[mid+1,high]*/
          /*否则,在[low,mid-1]*/
          if(key > list.get(mid).getId())
           low = mid + 1;
          else
           high = mid - 1;
         }
         return(-1);//没找到
        }
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-8-18 20:28

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表