美文网首页
算法4 读书笔记

算法4 读书笔记

作者: hh2020 | 来源:发表于2020-12-04 09:47 被阅读0次

    1.二分查找的迭代实现

    #pragma warning(disable:4996)

    #include <stdio.h>

    /*二分查找的递归实现*/

    int rank(int key, int* a, int lo, int hi)

    {

    if (lo > hi) return -1;

    int mid = lo + (hi - lo) / 2;

    if (key < a[mid]) return rank(key, a, lo, mid - 1);

    else if (key > a[mid]) return rank(key, a, mid + 1, hi);

    else return mid;

    }

    int main(void) {

    int a[12] = { 1,3,5,6,7,8,9,10,15,17,18,19 };

    int key = 10;

    int b = rank(10, a, 0, 12);

    printf("%d", b);

    return 0;

    }

    java版本(对比不同,C版本的我去掉了第一个函数,java是调用重载函数):

    package oj;

    public class aj {

    public static int rank(int key, int[] a) {

    return rank(key, a, 0, a.length - 1);

    }

    public static int rank(int key, int[] a, int lo, int hi) {

    if (lo > hi)

    return -1;

    int mid = lo + (hi - lo) / 2;

    if (key < a[mid])

    return rank(key, a, lo, mid - 1);

    else if (key > a[mid])

    return rank(key, a, mid + 1, hi);

    else

    return mid;

    }

    public static void main(String[] args) {

    int[] a = { 1, 3, 5, 6, 7, 8, 9, 10, 15, 17, 18, 19 };

    int key = 10;

    int b = rank(10, a);

    System.out.println(b);

    }

    }

    2.Java eclipse命令行输入参数的方法

    空白处进行右击>Run as>Run configurations,选择“Arguments”部分,输入一组参数,然后Run。

    补充:这种情况下通过命令行得到的参数都是字符串类型的,要进行四则运算,必须先转换成数值类型。使用Integer类中的类方法parseInt(),可以将小括号里的字符串转化为整型。Flaot.parseFloat()与Double.parseDouble()方法分别把小括号里的字符串转化为单精度实数与双精度实数。

    3.eclipse【算法4】环境配置

    1.点击new →Java project→右击项目->properties->java Build Path ->Libraries,鼠标点到ClassPath->点开Add External JARs然后找到你存放algs4.jar、stdlib.jar的位置,导入即可。

    右键项目new一个class命名为Test

    下边是测试程序代码

    package suanfates;

    import edu.princeton.cs.algs4.StdDraw;

    public class Test {

    public static void main(String[] args) {

      int N = 100;

            StdDraw.setXscale(0, N); //StdDraw就是algs4中的类

            StdDraw.setYscale(0, N*N);

            StdDraw.setPenRadius(.01);

            for(int i = 1; i <= N; ++i) {

                StdDraw.point(i, i);

                StdDraw.point(i, i*i);

                StdDraw.point(i, i*Math.log(i));

            }

    }

    }

    4.import edu.princeton.cs.algs4.StdOut;

    5.改变console控制台输出字体大小  window→preferences→搜索【Colors and Fonts】→【Debug】→edit

    改变代码字体大小 window→preferences→搜索【Colors and Fonts】→【Java】→edit

    6.sysout然后按alt+/可以直接打出System.out.println

    7.讲一个正整数n用二进制表示并转化为一个string类型的值s,Java有内置方法Integer.toBinaryString(n)专门完成这个任务,以下是另一种方法:

    int n;

    String s = "";

    for (n = 50; n > 0; n /= 2)

    s = (n % 2) + s;

    System.out.println(s);

    import java.util.Arrays;

    import edu.princeton.cs.algs4.StdOut;

    import edu.princeton.cs.algs4.In;

    import edu.princeton.cs.algs4.StdDraw;

    import edu.princeton.cs.algs4.StdIn;

    8.使用同一个包的另一个类   import 包名.类名

    Exception in thread "main" java.lang.IllegalArgumentException: Could not open %

    at edu.princeton.cs.algs4.In.<init>(In.java:196)

    at edu.princeton.cs.algs4.In.readInts(In.java:597)

    at suanfates.Whitelist.main(Whitelist.java:11)

    Caused by: java.net.MalformedURLException: no protocol: %

    at java.net.URL.<init>(Unknown Source)

    at java.net.URL.<init>(Unknown Source)

    at java.net.URL.<init>(Unknown Source)

    at edu.princeton.cs.algs4.In.<init>(In.java:182)

    ... 2 more

    相关文章

      网友评论

          本文标题:算法4 读书笔记

          本文链接:https://www.haomeiwen.com/subject/vdhlwktx.html