• 算法复杂度


    算法复杂度-1

    题目:有以下用Java语言描述的算法,说明其功能并计算复杂度,注意:时间结束后的回答无效

    double fun(double y,double x,int n)
    {
        y=x;
        while(n>1)
        {
            y=y*x;
            n--;
        }
        return y;
    }
    

    解析:功能是计算x的n次方并返回,复杂度为O(n)

    算法复杂度-2

    设n为正整数,给出下列3个算法关于问题规模n的时间复杂度

    题目1:

    1) 算法1
    void fun1(int n)
    {
        i=1,k=100;
        while (i<=n)
        {
            k=k+1;
            i+=2;
        }
    }
    

    解析:算法复杂度为O(n)

    题目2:

    2) 算法2
    void fun2(int b[], int n)
    {
        int i,j,k.x;
        for(i=0;i<n-1;i++)
        {
         k=i;
         for(j=i+1;j<n;j++)
         if (b[k]>b[j]) k=j;
         x=b[i];
         b[i]=b[k];
         b[k]=x;
        }
    }
    

    解析:算法复杂度为O(n^2)

    题目3:

    void fun3(int n)
    {
        int i=0,s=0;
        while (s<=n)
        {
            i++;
            s=s+i;
        }
    }
    

    解析:O(n^(1/2))

    算法复杂度-3

    3) 算法3
    用Java语言实现下列算法并进行单元测试,请给出算法的时间复杂度。
    1)求一个整数二维数组Arr[N][N]的所有元素之和。
    2)对于输入的任意3个整数,将它按从大到小的顺序输出。
    3)对于输入的任意n个整数,输出其中的最大和最小元素。
    

    解析:

    1. 算法复杂度为O(n^2)
    public class SumArray{
    public static void main(String[] args) {
    int array[][] = {{2,3,2},{2,4,6},{6,8,9}};
       SumArray arr = new SumArray();
       int a = arr.sumArray(array);
       System.out.println(a);
    }
    public int  sumArray(int array[][]){
        int sum = 0;
        for (int i = 0; i < array.length ; i++) {
    
            for (int j = 0; j < array[i].length; j++) {
                sum = sum + array[i][j];
            }
        }
        return sum;
    
    }
    }
    

    2)第二、三问可用同样的代码写出,方法为选择排序。

    public class sort {
    public static void main(String[] args) {
    Scanner scan = new Scanner(System.in);
    System.out.println("请输入需要多少个数: ");
    int a = scan.nextInt();
    int arr[] = new int[a];
    System.out.println("请输入"+ a +"个整数:");
    for(int i=0 ; i<a; i++){
        arr[i]= scan.nextInt();
    }
       int arr1[] = selectionsort.selectionSort(arr);
        System.out.println("排序后的数组为");
        for(int j =0; j<a;j++){
    
            System.out.println(arr1[j]);
        }
    
        System.out.println("最大值为:" + arr1[a-1]);
        System.out.println("最小值为:" + arr1[0]);
    }
    }
    

  • 相关阅读:
    python常用函数年初大总结
    Linux系统巡检常用命令
    码率
    视频码率计算问题
    Python快速教程
    MFC消息机制
    MySQL多表查询
    VoIP的话音质量测量方法
    用Py2exe打包Python脚本简单介绍
    在Eclipse中执行Andorid test preject提示The connection to adb is down, and a severe error has occured.解决方法
  • 原文地址:https://www.cnblogs.com/shuailinzhen/p/8046649.html
Copyright © 2020-2023  润新知