数据结构与算法(1)
算法是指用来操作数据,解决程序问题的一组方法
public class Recursion {
// 递归
public static long func1(long n) {
if (n <= 1) {
return n;
}
return func1(n-1)+func1(n-2);
}
// 用for循环实现递归
public static int func2(int n){
if (n<=1){
return n;
}
int first = 0;
int second =1;
for (int i = 0; i < n - 1; i++) {
int sum = first + second;
first = second;
second = sum;
}
return second;
}
public static void main(String[] args) {
System.out.println(func1(3));
System.out.println(func2(3));
}
}
T(n) = O(f(n))
T(n)表示代码执行的时间
n表示数据规模的大小
f(n)表示代码执行的次数总和
大O表示当前时间执行的时间复杂度
public class Recursion {
public void cal01(int age){
// 总执行1次(总执行时间)
// T(n)=O(1) 常数阶
if (age>58){
System.out.println("阿姨");
}else if (age>28){
System.out.println("小姐姐");
}else{
System.out.println("没少女");
}
}
public int cal02(int n){
// 总执行3+3n(总执行时间)
// T(n)=O(n) 线性阶
// 执行1次
int sum = 0;
// 执行1次
int i = 1;
// 执行n次 执行n次
for (; i <=n ; i++) {
sum = sum+i;//执行n次
}
// 执行1次
return sum;
}
public void cal03(int n){
// 1+3n(执行时间)
// T(n)=O(n)
for (int i = 0; i < n; i++) {
System.out.println("次数");
}
}
public void cal04(int n){
// 1+2n+n*(1+3n)=3n^2+3n+1
// T(n)=O(n^2) 平方阶
for (int i = 0; i < n; i++) {//1+2n
for (int j = 0; j < n; j++) {//n*(1+3n)
System.out.println("次数");
}
}
}
public void cal05(int n){
// 1+63n
// T(n)=O(n)
for (int i = 0; i < n; i++) {//1+2n
for (int j = 0; j < 20; j++) {//n*(1+20+20+20)
System.out.println("次数");
}
}
}
public void cal06(int n){
// log(2)n+1
// T(n)=O(log(2)n)=O(log(n))对数阶 底数可以忽略因为取决定性质的是n 但底数并不代表是10
int i = 0;//1
// log(2)n
while (i<n){
i = i * 2;
}
}
public void cal07(int n){
// 1+2log(2)n+(1+3n)*log(2)n
// T(n)=O(n*log(2)n)=O(n*log(n))线性对数阶 底数可以忽略因为取决定性质的是n
for (int i = 0; i < n; i+=i) {//1+2log(2)n
for (int j = 0; j < n; j++) {//(1+3n)*log(2)n
System.out.println("次数");
}
}
}
public void cal08(int n){
// 3+3n+n*3n
// T(n) = O(f(3+3n+n*3n))= O(n^2)
int sum = 0;//1
int i = 1;//1
int j = 1;//1
for (; i <= n ; ++i) {//3n
j =1;
for (; j<=n; ++j) {//3n
sum = sum + i * j;
}
}
}
public void cal09(int n){
// T(n) = O(1)
int i = 1;
int j = 2;
int m = i + j;
}
}