算法-第四版-练习1.2.9解答

修改BinarySearch,使用Counter统计大有查找中被检查的键的总数并在查找全部结束后打印该值。


/**
 * Description : 
 * Author      : mn@furzoom.com
 * Date        : Sep 26, 2016 4:49:49 PM
 * Copyright (c) 2013-2016, http://furzoom.com All Rights Reserved.
 */
package com.furzoom.lab.algs.ch102;

import java.util.Arrays;

import edu.princeton.cs.algs4.Counter;
import edu.princeton.cs.algs4.In;
import edu.princeton.cs.algs4.StdIn;
import edu.princeton.cs.algs4.StdOut;

/**
 * ClassName    : E10209 <br>
 * Function     : TODO ADD FUNCTION. <br>
 * date         : Sep 26, 2016 4:49:49 PM <br>
 * 
 * @version 
 */
public class E10209
{
    public static int rank(int key, int[] a, Counter counter)
    {
        int lo = 0;
        int hi = a.length - 1;
        while (lo <= hi)
        {
            counter.increment();
            int mid = lo + (hi - lo) / 2;
            if (key < a[mid])
            {
                hi = mid - 1;
            }
            else if (key > a[mid])
            {
                lo = mid + 1;
            }
            else
            {
                return mid;
            }
        }
        return -1;
    }
    
    public static void main(String[] args)
    {
        In in = new In(args[0]);
        int key = Integer.parseInt(args[1]);
        int[] whitelist = in.readAllInts();
        Counter c = new Counter("binary search");
        
        Arrays.sort(whitelist);
        rank(key, whitelist, c);
        System.out.println(c);
    }

}

结果:

D:\proj>java -cp ".;../lib/algs4.jar" com
.furzoom.lab.algs.ch102.E10209 com/furzoom/lab/algs/ch101/tinyW.txt 100
5 binary search


算法-第四版-1.2 数据抽象-习题索引汇总

算法-第四版习题索引汇总

posted @ 2017-10-22 15:50  枫竹梦  阅读(197)  评论(0编辑  收藏  举报