zoukankan      html  css  js  c++  java
  • 算法复杂度

    算法复杂度-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]);
    }
    }
    

  • 相关阅读:
    Getting started with 3G | ip.access nano3G+OpenBSC+Osmocom-bb Part 1
    Metasploit的射频收发器功能 | Metasploit’s RF Transceiver Capabilities
    分析无线遥控器信号并制作Hack硬件进行攻击
    利用Hackrf One进行GPS定位欺骗制作超级跑马机
    使用OpenBTS基站测试物联网模块安全性
    在cmd中为命令设置别名以及启动cmd时自动执行bat
    Struts2、spring2、hibernate3在SSH中各起什么作用
    switch omega
    html转译字符 字符实体
    excel自定义数据验证
  • 原文地址:https://www.cnblogs.com/shuailinzhen/p/8046649.html
Copyright © 2011-2022 走看看