当前位置: 首页 > news >正文

算法简单试题

一、选择题
01.一个算法应该是(  B  ).
      A.程序                                                        B.问题求解步骤的描述        
      C.要满足五个基本特性                               D.A和C
02.某算法的时间复杂度为O(n²),则表示该算法的(  C  )。
     A,问题规模是n² (默认都是n)                        B.执行时间等于n²  <=k*n²
     C.执行时间与n²成正比                                 D.问题规模与n²成正比
解析:算法时间复杂度:O(F(n))意味着算法在任何情况下,规模为n时,所花费的时间<=k*F(n)
03.若某算法的空间复杂度为O(1),则表示该算法(  B  )。
     A,不需要任何辅助空间                                 B.所需辅助空间大小与问题规模n无关
     C.不需要任何空间                                        D.所需空间大小与问题规模n无关
04.下列关于时间复杂度的函数中,时间复杂度最小的是(  D  ).
    A.T_{1}(n)=nlog_{2}n + 5000n                   B.T_{2}(n)=n^{2}- 8000n
    C.T_{3}(n)= nlog_{2}n - 6000n                   D.T_{4}(n)= 20000log_{2}n
05.以下算法的时间复杂度为( D  ).

void fun(int n){  //n作为参数
        int i=1;

        while(i<=n)
                i=i*2;        //核心运算   

}


解析:核心操作是i=i*2;判断运算次数 ,即1*2*2*2乘多少次是n (2的几次方是n)

06.有以下算法,其时间复杂度为( C  ).

void fun (int n){
        int i=0;
        while(i*i*i<=n)
                i++;    //i通过++操作往后推进,是核心操作

}

             
解析:核心运算是i++,i*i*i仅用于逻辑判断,并没有“推进i”
当i*i*i>n时,则停止增加  即i = n开三次方

07.程序段如下:

for(i=n-1;i>1;i--)
        for(j=1;j<i;j++)
                if(A[j]>A[j+1])  //满足条件执行if
                        A[j]与A[j+1]对换;

其中n为正整数,则最后一行语句的频度在最坏情况下是(  D  )。

解析:冒泡排序的算法代码,所有相邻元素都为逆序时,最后一行的语句每次都会执行
08.下列程序段的时间复杂度为( A  )。

if(n>=0){
        for (int i=0;i<n;i++)
                for(int j=0;j<n;j++)
                        printf("输入数据大于或等于零\n");
}
else{
        for(int j=0;j<n;j++)
                printf("输入数据小于零\n");

09.以下算法中加下画线的语句的执行次数为( A  )。  m++的执行次数

int m=0,i,j;
for(i=1;i<=n;i++)
        for(j=1;j<=2*i;j++)
                m++;

     A. n(n+1)                        B.n                                C. n+1                            D. n²
10.下列函数代码的时间复杂度是(  C )。

int Func(int n){
        if(n==1)

                return 1;
        else

                return 2* Func(n/2)+n;

11.【2011统考真题】设n是描述问题规模的非负整数,下列程序段的时间复杂度是( A )

x=2;  //初值
while(x<n/2) //结束条件

        x=2*x;  //执行操作


解析:x=2*2*2*....乘多少次2达到n
12.【2012统考真题】求整数n(n≥0)的阶乘的算法如下,其时间复杂度是(  B  )。

int fact(int n){
        if(n<=1)

                return 1;

return n*fact (n-1);  //递归程序


解析:程序就是一个递归,整个程序的基础操作只有递归处有乘法,一次递归是一次乘法运算,值为n的情况下递归嵌套n次

13.【2014统考真题】下列程序段的时间复杂度是(  C  )。

count=0;
for(k=1;k<=n;k*=2) 

        for(j=1;j<=n;j++)
                count++;


解析:第一层:k的取值分别是1,2,4,8...一直到n:log2n次循环
第二层:无论k的取值是多少,第二层都是自加n次

14.【2017统考真题】下列函数的时间复杂度是(  B ).

int func (int n){
        int i=0,sum=0;
        while(sum<n)

                sum += ++i;

         return i;
)

解析:核心操作:sum+=++i; sum的变化过程:0+1+2+3....+i ,当sum<n时跳出循环,判断i加了几次,求和公式为sum=i*(i-1)/2<n,根据数量级可以把左边看成i²,即i²<n ,所以i=n的二分之一次方
15.【2019统考真题】设n是描述问题规模的非负整数,下列程序段的时间复杂度是(  B )。

x=0;
while (n>=(x+1)*(x+1))

x=x+1;


解析:(x+1)²<=n ,根据同阶数量级可以看成x²<n 即x趋向于根号n

16.【2022统考真题】下列程序段的时间复杂度是(  B  )。

int sum=0;
for(int i=l;i<n;i*=2)
       for(int j=0;j<i;j++)
                sum++;


解析:求出sum++的执行次数 
第一层:i=1,2,4,8...2的k次方
第二层:j<i,所以j有0~i-1个
1+2+3+....+2的k次方 = 2的k+1次方-1<2n

二、综合应用题

01.分析以下各程序段,求出算法的时间复杂度。

①        i=1;k=0;
           while(i<n-1){
                k=k+10*i;

                i++;
②        y=0;
           while((y+1)*(y+1)<=n)
            y=y+1;
③        for(i=0;i<n;i++)
                for(j=0;j<m;j++)
                        a[i][j]=0;

①基本语句k=k+10*i共执行了n-2次,所以T(n)= O(n)。
②设循环体共执行t次,每循环一次,循环变量y加1,最终t=y。故t²≤n,得T(n)=O(n1/2)。
③内循环执行m次,外循环执行n次,根据乘法原理,共执行了mxn次,故T(m, n)=O(mxn)。 

相关文章:

算法简单试题

一、选择题 01.一个算法应该是( B ). A.程序 B.问题求解步骤的描述 C.要满足五个基本特性 D.A和C 02&#xff0e;某算法的时间复杂度为O(n)&#xff0c;则表示该…...

CSS 自测题 -- 用 flex 布局绘制骰子(一、二、三【含斜三点】、四、五、六点)

一点 <!DOCTYPE html> <html lang"en"><head><meta charset"UTF-8" /><meta name"viewport" content"widthdevice-width, initial-scale1.0" /><title>css flex布局-画骰子</title><sty…...

蓝桥集训之牛的学术圈 I

蓝桥集训之牛的学术圈 I 核心思想&#xff1a;二分 确定指数x后 判断当前c[i]是否>x(满足条件) 并记录次数同时记录 1后满足条件的个数最后取bns和m的最小值 为满足条件的元素个数ansbns为当前指数x下 满足条件的元素个数 #include <iostream>#include <cstring…...

软件设计师软考题目解析21 --每日五题

想说的话&#xff1a;要准备软考了。0.0&#xff0c;其实我是不想考的&#xff0c;但是吧&#xff0c;由于本人已经学完所有知识了&#xff0c;只是被学校的课程给锁在那里了&#xff0c;不然早找工作去了。寻思着反正也无聊&#xff0c;就考个证玩玩。 本人github地址&#xf…...

python读写json文件详解

在Python中&#xff0c;可以使用json模块来读写JSON格式的文件。下面是一个详细的示例&#xff0c;演示了如何读写JSON文件&#xff1a; import json# 写入JSON文件 data {"name": "John","age": 30,"city": "New York" }…...

#include<ros/ros.h>头文件报错

快捷键 ctrl shift B 调用编译&#xff0c;选择:catkin_make:build&#xff09;(要先在vscode上添加扩展&#xff1a;ros) 可以点击配置设置为默认&#xff0c;修改.vscode/tasks.json 文件 修改.vscode/tasks.json 文件&#xff0c;否则ros.h头文件会报错 内容修改为以下内…...

mybatis单表curd笔记(尚硅谷

Mybatis 11111ibatis和mybatis不同 查询文档mybatis的日志输出id赋值输入&#xff08;向sql语句传入数据单个简单类型单个实体对象多个简单类型map类型 输出数据的指定单个简单类型单个实体类型输出map类型输出list输出类型主键回显&#xff08;自增长类型主键回显&#xff08;…...

在线重定义-操作步骤

第一步&#xff1a;验证表是否能被在线重定义 验证是否能按主键重定义&#xff08;默认&#xff0c;最后一次参数可以不加&#xff09; 1 2 3 4 begin --dbms_redefinition.can_redef_table(scott,tb_cablecheck_equipment_bak); dbms_redefinition.can_redef_table(scot…...

16:00面试,16:06就出来了,问的问题过于变态了。。。

从小厂出来&#xff0c;没想到在另一家公司又寄了。 到这家公司开始上班&#xff0c;加班是每天必不可少的&#xff0c;看在钱给的比较多的份上&#xff0c;就不太计较了。没想到2月一纸通知&#xff0c;所有人不准加班&#xff0c;加班费不仅没有了&#xff0c;薪资还要降40%…...

基于dashscope在线调用千问大模型

前言 dashscope是阿里云大模型服务平台——灵积提供的在线API组件。基于它&#xff0c;无需本地加载大模型&#xff0c;通过在线方式访问云端大模型来完成对话。 申请API key 老规矩&#xff1a;要想访问各家云端大模型&#xff0c;需要先申请API key。 对于阿里云&#x…...

【Python】可变数据类型 不可变数据类型 || hash

&#x1f6a9; WRITE IN FRONT &#x1f6a9; &#x1f50e; 介绍&#xff1a;"謓泽"正在路上朝着"攻城狮"方向"前进四" &#x1f50e;&#x1f3c5; 荣誉&#xff1a;2021|2022年度博客之星物联网与嵌入式开发TOP5|TOP4、2021|2222年获评…...

MySQL 篇-深入了解多表设计、多表查询

&#x1f525;博客主页&#xff1a; 【小扳_-CSDN博客】 ❤感谢大家点赞&#x1f44d;收藏⭐评论✍ 文章目录 1.0 多表设计概述 1.1 多表设计 - 一对多 1.2 多表设计 - 一对一 1.3 多表设计 - 多对多 2.0 多表查询概述 2.1 多表查询 - 内连接 2.2 多表查询 - 外连接 2.3 多表查…...

【Java】Spring的ReflectionUtils类常用方法学习笔记

目录 ReflectionUtils介绍 常用方法 访问字段 方法调用 处理回调 示例 脑容量不够了&#xff0c;以简单的小知识作为一天的结尾吧(悲 ReflectionUtils介绍 ReflectionUtils是Spring Framework中非常实用的一个工具类&#xff0c;为开发人员提供了简便的反射操作方法&am…...

内存函数详解

1. memcpy函数 void * memcpy ( void * destination, const void * source, size_t num ); 1.1 函数的功能&#xff0c;使用与注意事项 1. memcpy函数的作用是内存拷贝&#xff0c;即将source指向的空间中的num个字节拷贝到destination指向的空间中去&#xff0c;然后返回de…...

事务(transaction)

事务&#xff0c;什么是事务&#xff0c;事务就是由单独单元的一个或多个sql语句组成&#xff0c;在这个单元中&#xff0c;每个sql语句都是相互依赖的。而整个单独单元是作为一个不可分割的整体存在&#xff0c;类似于物理当中的原子&#xff08;一种不可分割的最小单位&#…...

Linux之cd、pwd、mkdir 命令

cd命令&#xff0c;切换目录 1&#xff09;当Linux终端&#xff08;命令行&#xff09;打开的时候&#xff0c;会默认以用户的HOME目录作为当前的工作目录。 2&#xff09;我们可以通过cd命令&#xff0c;更改当前所在的工作目录。 3&#xff09;cd命令来自英文&#xff1a;C…...

【python高级编程教程】笔记(python教程、python进阶)第三节:(1)多态与鸭子类型(Polymorphism and Duck Typing)

参考文章1&#xff1a;【比刷剧还爽】清华大佬耗时128小时讲完的Python高级教程&#xff01;全套200集&#xff01;学不会退出IT界&#xff01; 参考文章2&#xff1a;清华教授大力打造的Python高级核心技术&#xff01;整整100集&#xff0c;强烈建议学习&#xff08;Python3…...

学习JAVA的第十五天(基础)

目录 数据结构 二叉树 二叉查找树 平衡二叉树 红黑树 Set系列集合 HashSet集合 LinkedHashSet集合 TreeSet集合 前言&#xff1a;学习JAVA的第十四天&#xff08;基础&#xff09;-CSDN博客 数据结构 二叉树 元素&#xff1a;结点&am…...

LVS四层负载均衡集群

简介 LVS&#xff08;Linux Virtual Server&#xff09;即Linux虚拟服务器&#xff0c;是由章文嵩博士主导的开源负载均衡项目&#xff0c;目前LVS已经被集成到Linux内核模块中。该项目在Linux内核中实现了基于IP的数据请求负载均衡调度方案&#xff0c;终端互联网用户从外部访…...

【pyinstaller打包记录】程序使用多进程,打包后,程序陷入死循环

简介 PyInstaller 是一个用于将 Python 程序打包成可执行文件&#xff08;可执行程序&#xff09;的工具。它能够将 Python 代码和其相关的依赖项&#xff08;包括 Python 解释器、依赖的模块、库文件等&#xff09;打包成一个独立的可执行文件&#xff0c;方便在不同环境中运行…...

uniapp 对接腾讯云IM群组成员管理(增删改查)

UniApp 实战&#xff1a;腾讯云IM群组成员管理&#xff08;增删改查&#xff09; 一、前言 在社交类App开发中&#xff0c;群组成员管理是核心功能之一。本文将基于UniApp框架&#xff0c;结合腾讯云IM SDK&#xff0c;详细讲解如何实现群组成员的增删改查全流程。 权限校验…...

7.4.分块查找

一.分块查找的算法思想&#xff1a; 1.实例&#xff1a; 以上述图片的顺序表为例&#xff0c; 该顺序表的数据元素从整体来看是乱序的&#xff0c;但如果把这些数据元素分成一块一块的小区间&#xff0c; 第一个区间[0,1]索引上的数据元素都是小于等于10的&#xff0c; 第二…...

【Linux】shell脚本忽略错误继续执行

在 shell 脚本中&#xff0c;可以使用 set -e 命令来设置脚本在遇到错误时退出执行。如果你希望脚本忽略错误并继续执行&#xff0c;可以在脚本开头添加 set e 命令来取消该设置。 举例1 #!/bin/bash# 取消 set -e 的设置 set e# 执行命令&#xff0c;并忽略错误 rm somefile…...

微信小程序之bind和catch

这两个呢&#xff0c;都是绑定事件用的&#xff0c;具体使用有些小区别。 官方文档&#xff1a; 事件冒泡处理不同 bind&#xff1a;绑定的事件会向上冒泡&#xff0c;即触发当前组件的事件后&#xff0c;还会继续触发父组件的相同事件。例如&#xff0c;有一个子视图绑定了b…...

C# 类和继承(抽象类)

抽象类 抽象类是指设计为被继承的类。抽象类只能被用作其他类的基类。 不能创建抽象类的实例。抽象类使用abstract修饰符声明。 抽象类可以包含抽象成员或普通的非抽象成员。抽象类的成员可以是抽象成员和普通带 实现的成员的任意组合。抽象类自己可以派生自另一个抽象类。例…...

使用LangGraph和LangSmith构建多智能体人工智能系统

现在&#xff0c;通过组合几个较小的子智能体来创建一个强大的人工智能智能体正成为一种趋势。但这也带来了一些挑战&#xff0c;比如减少幻觉、管理对话流程、在测试期间留意智能体的工作方式、允许人工介入以及评估其性能。你需要进行大量的反复试验。 在这篇博客〔原作者&a…...

Java数值运算常见陷阱与规避方法

整数除法中的舍入问题 问题现象 当开发者预期进行浮点除法却误用整数除法时,会出现小数部分被截断的情况。典型错误模式如下: void process(int value) {double half = value / 2; // 整数除法导致截断// 使用half变量 }此时...

计算机基础知识解析:从应用到架构的全面拆解

目录 前言 1、 计算机的应用领域&#xff1a;无处不在的数字助手 2、 计算机的进化史&#xff1a;从算盘到量子计算 3、计算机的分类&#xff1a;不止 “台式机和笔记本” 4、计算机的组件&#xff1a;硬件与软件的协同 4.1 硬件&#xff1a;五大核心部件 4.2 软件&#…...

为什么要创建 Vue 实例

核心原因:Vue 需要一个「控制中心」来驱动整个应用 你可以把 Vue 实例想象成你应用的**「大脑」或「引擎」。它负责协调模板、数据、逻辑和行为,将它们变成一个活的、可交互的应用**。没有这个实例,你的代码只是一堆静态的 HTML、JavaScript 变量和函数,无法「活」起来。 …...

Chrome 浏览器前端与客户端双向通信实战

Chrome 前端&#xff08;即页面 JS / Web UI&#xff09;与客户端&#xff08;C 后端&#xff09;的交互机制&#xff0c;是 Chromium 架构中非常核心的一环。下面我将按常见场景&#xff0c;从通道、流程、技术栈几个角度做一套完整的分析&#xff0c;特别适合你这种在分析和改…...