算法学习一
来源:互联网 发布:火狐 查看元素js事件 编辑:程序博客网 时间:2024/06/13 16:33
教材:《算法》(第四版)-Robert Sedgewick
Java程序的基本结构
原始数据类型、语句、数组、静态方法、字符串、标准输入/输出、数据抽象。
1.原始数据类型与表达式
int、double、boolean、char
ps:运算符+-*/ 都是被重载过的,会对不同类型执行不同的操作
2.语句
break:立即从循环中退出;
continue:立即开始下一轮循环。
3.数组
double[] a = new double[N];//默认初始值为0.0
声明、创建(new一个)、初始化
Ps:必须明确创建数组来告诉编译器在编译时需要预留多少空间。
4.静态方法(即函数)
public static double sqrt (double c) { <...> return ...}
修饰符static将这类方法和实例方法区别开
5.递归
- 递归总有一个最简单的情况——方法的第一条语句总是一个包含return的条件语句;
- 递归调用总是去尝试解决一个规模更小的子问题,收敛;
- 递归调用的父问题和尝试解决的子问题之间不应该有交集。
6.API(应用程序编程接口)
将调用和实现分离。
7.字符串
8.输入输出
- 标准输入
public class Average { public static void main(String[] args) { //取StdIn中所有数的平均值 double sum = 0.0; int cnt = 0; while (!StdIn.isEmpty()) { sum += StdIn.readDouble(); cnt++; } double avg = sum / cnt; StdOut.printf("Average is %.5f\n", avg); }}
9.二分查找
package Algorithms.Ex;import java.util.Arrays;import edu.princeton.cs.algs4.In;import edu.princeton.cs.algs4.StdIn;import edu.princeton.cs.algs4.StdOut;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); } }}
记录下花了整整一下午的控制台java javac命令的问题:
首先,需要将控制台配置好:运行-外部工具-外部工具配置-程序-命令行配置-位置:C:\Windows\system32\cmd.exe-工作目录选择workspace即可;
其次,按照
http://blog.csdn.net/diverhou/article/details/50608637 配置好所需环境变量;
将两个txt文件存在src目录下后,编译和运行方式如下:
首先,要回到src目录下
D:\Java\workspace\Algorithms\src>javac Algorithms/Ex/BinarySearch.java
在编译时,使用/ 分割包的层次目录
D:\Java\workspace\Algorithms\src>java Algorithms.Ex.BinarySearch tinyW.txt < tinyT.txt
在运行时,使用. 分割包的层次目录
注:在程序中去掉“package Algorithms.Ex;”这句话的话,会得到如下结果:
D:\Java\workspace\Algorithms\src\Algorithms\Ex>javac BinarySearch.java
直接在Ex目录下,编译可行,因为Package限定了
D:\Java\workspace\Algorithms\src\Algorithms\Ex>java BinarySearch tinyW.txt < tinyT.txt
错误: 找不到或无法加载主类 BinarySearch
直接在Ex目录下,运行不可行
然而回到src目录下,运行就可以了,原因是什么有待追究(??????)
D:\Java\workspace\Algorithms\src>java Algorithms.Ex.BinarySearch tinyW.txt < tinyT.txt
50
99
13
- 算法学习(一)分治算法
- 算法研究学习一
- 算法学习一
- 算法学习(一)
- 简单算法学习一
- 《算法导论》学习(一)
- 算法学习(一)
- 算法学习(一)
- 算法学习一
- 机器学习算法一
- 算法学习[一]
- 算法学习日志(一)
- Apriori算法学习(一)
- 算法学习之博弈论(一)
- 算法导论学习(一)
- 算法学习(一、冒泡排序)
- 排序算法学习系列(一)
- 【算法学习】一、枚举举例
- D3D学习笔记(光照+反射白光的旋转金字塔)
- dubbo中添加filter
- 对象克隆技术
- 图像处理与计算机视觉:基础,经典以及最近发展
- Android SO 加壳
- 算法学习一
- java.text.DecimalFormat
- RecyclerView之ViewHolder封装实现点击、长按、headerView和多选功能
- poj1273 Drainage Ditches
- C语言chown()函数:改变文件所有者
- 根据前端jsp/js文件实现action步骤
- 【阅读】《黑客与画家》系列06-再设计
- CCNU ACM 2016夏季集训·day1比赛
- Java学习之三元运算符-if语句