瑞星卡卡安全论坛

首页 » 技术交流区 » 系统软件 » 借鉴二分查找法找出制定容器内大于指定数值的元素个数
我是单眼皮 - 2011-2-28 14:22:00
public static int countsBiger(final Integer[] array, final int i) { 
        final int idx; 
    final int len = array.length; 
    // 先排除首尾的 
    if (array[0] > i) { 
            return len; 
    } 
    if (array[len - 1] <= i) { 
        return 0; 
    } 
    // 如不包含则借鉴二分查找法进行查找 
    int midIdx = 0; 
    int n = 2; 
    int tag; 
    while ((tag = (len / n)) >= 0) { 
        midIdx = array[tag]; 
        if (midIdx > i) { 
            if (tag == 0) { 
                break; 
            } 
            // 如果仍比指定值大则继续切割 
            n *= 2; 
        } else if (midIdx == i) { 
            break; 
        } else { 
            if (array[tag + 1] >= i) { 
            // 如果下个数字就不小于指定数字则结束循环,得出结果为 tag 
                break; 
            } else { 
            // 找出此区间(tag,lastTag)上次切割点)内第一个不小于i的元素 
                int lastTag = len / (n / 2); 
                while (lastTag - tag > 1) { 
                    tag += (lastTag - tag) / 2; 
                    if (array[tag] >= i) { 
                        break; 
                    } 
                } 
                break; 
            } 
        } 
    } 
    return len - 1 - tag; 
}
超级游戏迷 - 2011-3-2 19:24:00
编程板块撤销后,此类帖子就曲高和寡了。
这代码咱也不懂,残念……:kaka6:
1
查看完整版本: 借鉴二分查找法找出制定容器内大于指定数值的元素个数