算法分析补分与算法复杂度3
课堂练习
第一题
由题意知当i小于等于n的时候进行循环,运算的时间复杂度得出应该为n,因此O(n)
第二题
由题意知可以看出这是两个嵌套的循环,且每一个嵌套的时间复杂度均为n,则总体的时间复杂度应该为O(n2)
第三题
由题意知可以先设n为一个具体的值,进而推导O(n2)的时间复杂度为n,所以最终复杂度就应该为根号下n。
课后
用 Java语言实现下列算法并进行单元测试, 请给出算法的时间复杂度。
(1)求一个整数二维数组Arr[N][N]的所有元素之和。
(2)对于输入的任意 3 个整数, 将它们按从小到大的顺序输出。
(3)对于输入的任意 n 个整数, 输出其中的最大和最小元素。
本周内发博客对实现情况进行总结
/**
-
Created by yuanhongming on 2017/09/22.
/
public class test {
public static void main(String args[]){
int num[][]={{11,22,44,55}};
for(int i=0;i<num.length;i++)
{
int sum = 0;
for(int j=0;j<num[i].length;sum+=num[i][j],j++);
System.out.println(sum+"\n");
}
}
}
/* -
Created by yuanhongming on 2017/09/24.
*/
import java.util.Scanner;
public class test1
{
public static void main(String[] args)
{
int num0;
Scanner in = new Scanner(System.in);
System.out.println("输入第一个数:");
int num1 = in.nextInt();
System.out.println("输入第二个数:");
int num2 = in.nextInt();
System.out.println("输入第三个数:");
int num3 = in.nextInt();
if(num1>num2) {
num0 = num2;
num2 = num1;
num1 = num0;
}if(num2>num3){ num0 = num2; num2 = num3; num3 = num0; } if(num1>num2){ num0 = num2; num2 = num1; num1 = num0; } System.out.println("从小到大"+num1+" "+num2+" "+num3);
}
}
/**
-
Created by yuanhongming on 2017/09/24.
/
import java.util.;
public class test2 {public static void main(String[] args) {
Scanner input = new Scanner (System.in);
double max = 0,min = 0,nums = 1;
System.out.println("请输入第1个数(输入“0”是退出):");
nums = input.nextDouble();
max = nums;
min = nums;
for(int i = 2;nums != 0;i++){
System.out.println("请输入第"+i+"个数(输入“0”是退出):");
nums = input.nextDouble();
if(nums != 0){
if(nums > max){
max = nums;
}
if(nums < min){
min = nums;
}
}
}
System.out.println("最大值为:"+max);
System.out.println("最小值为:"+min);
}
}