牛客选择题(二)

本文探讨了牛客网700题中的关键算法概念,包括不同循环次数的影响、算法特性、多型数据类型、k路归并趟数、选择排序法的应用、抽象数据类型的定义、数据结构的存储及遍历效率等,提供了丰富的编程实践指导。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

牛客700题整理(二)

1、两层for循环次数不一样的时候(差很多的时候,比如1000次和1000000次),速度不一样快,并不是简单的时间复杂度问题
 进行数组访问时,操作系统需要将相关内存页面载入cache中,一个页面的大小是有限的,如果程序需要访问页面外的内存数据,操作系统需要进行换页操作,这个操作是耗时的。t1访问的内存区域大小为1000,系统不需要或极少需要换页。t2需要访问的内存区域大小为1000000,系统需要多次换页,比较耗时。简单的讲,t1具有较好的程序局部性
 2、算法的特性(必须要有的基本特征):输入输出、有穷性、确定性、可执行性    
设计算法需要(好的算法有的特征):正确性、底耦合高效率低存储、可读性、健壮性
输入输出中并不是说必须要有1个,0个输入也可以的(比如递归?)所谓0个输入是指算法本身定出了初始条件
不过,一个算法要有一个或多个输出,以反映对输入数据加工后的结果。没有输出的算法是毫无意义的
3、转义字符,分为三种:一般转义字符,八进制转移字符和十六进制转移字符
一般转义字符,如‘\b’,由两个字符表示,其实代表一个字符,这个代表退格字符
八进制转义字符,如‘\007’,三位数字是八进制的,ASCII码为7的表示响铃
十六进制,如'\xfe',同样后面数字是所表示意思的Ascii码的十六进制表示,注意一定要有x,大小写都行
字符常量,字符常量是用单引号括起来的一个字符,双引号就是字符串(C语言中)
4、多型数据类型是指包含的数据元素的类型并不确定。比如栈可以是整数栈、字符栈、对象栈等等。
但是字符串,它的元素必然是字符。
5、m个元素k路归并的归并趟数s=logk(m),也就是以k为底的m的对数
6、设有 1000 个基本有序的元素,希望用最快的速度挑选出其中前 10 个最大的元素,最后选用( )排序法。


这里需要注意的是:如果1000个数据基本有序的话,可以考虑不用与初始无关的排序方法,而取topN的话可以用局部排序方法,不用全局排序,冒泡排序的话,每次都能把最大的元素放在最后,所以时间复杂度为10N,而快速排序显然不合适,归并排序,不好进行取TopN的操作
7、数据结构的抽象操作的定义与具体实现无关
抽象数据类型独立于具体实现(也就是数据结构与具体实现无关),只是将数据和操作封装在一起,使得用户程序只能通过抽象数据类型定义的某些操作来访问其中的数据,从而实现了信息隐藏(封装?只能用get,set类似的函数??)
https://www.nowcoder.com/profile/5056224/note/detail/252984
8、对n个节点,e条边采用邻接表存储的有向图进行广度优先遍历,算法时间复杂度为O(n+e)
广度优先遍历需要借助队列实现。邻接表的结构包括:顶点表;边表(有向图为出边表)。当采用邻接表存储方式时,在对图进行广度优先遍历时每个顶点均需入队一次(顶点表遍历),故时间复杂度为 O(n)
在搜索所有顶点的邻接点的过程中,每条边至少访问一次(出边表遍历),故时间复杂度为 O(e) 
算法总的时间复杂度为 O(n+e) 


初始数据集的排列顺序对算法的性能无影响的是 基选归堆
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值