算法4 读书笔记

2020-12-04  本文已影响0人  hh2020

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

上一篇 下一篇

猜你喜欢

热点阅读