二分查找算法实现《算法(第四版)》

        最近开始看《算法(第4版)》这本书,在此记录下自己的学习心得、遇到的问题以及如何解决的。希望能够提升自己帮助他人。

        刚开始看这本书遇到的第一个比较有代表性的算法就是二分查找,运用《算法》这本书所提供的工具DrJava(课本官网地址连接http://algs4.cs.princeton.edu/home/)去运行书中所给的代码时遇到一点小小的问题。书上算法源码如下:

import java.util.Arrays; public class BinarySearch {     public static int rank(int key,int[] a)     {         int lo = 0;         int hi = a.length-1;         while(lo <= hi)         {             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)     {         int[] whitelist = In.readInts(args[0]);         Arrays.sort(whitelist);         while(!StdIn.isEmpty())         {             int key = StdIn.readInt();             if(rank(key,whitelist)<0)                 StdOut.println(key);         }     } } 直接运行会发现很多错误,如下: File: C:\Users\Administrator\algs4\code\BinarySearch.java  [line: 24]

Error: StdIn cannot be resolved

File: C:\Users\Administrator\algs4\code\BinarySearch.java  [line: 26]

Error: StdOut cannot be resolved

根据错误提示发现没有导入相应的库文件,接着导入库文件: import edu.princeton.cs.algs4.StdIn;

import edu.princeton.cs.algs4.StdOut;

import edu.princeton.cs.algs4.In;

导入后运行,发现会出现一个Warning: The method readInts(java.lang.String) from the type edu.princeton.cs.algs4.In is deprecated意思是 edu.princeton.cs.algs4.包中readInts方法不被赞成,可能是过期的方法但是不妨碍运行;在命令行输入java BinarySearch tinyW.txt < tinyT.txt,这里需要注意的是tinyW.txt 文件需要和源码文件放在同一个目录下。 运行结果如下图所示:
《二分查找算法实现《算法(第四版)》》

    原文作者:查找算法
    原文地址: https://blog.csdn.net/u011948899/article/details/60775390
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞