NOIP2018普及组错题整理

给定一个含 NN 个不相同数字的数组,在最坏情况下,找出其中最大或最小的数,至少需要 N−1N−1 次比较操作。则最坏情况下,在该数组中同时找最大与最小的数至少需要( )次比较操作。(⌈⌉⌈⌉ 表示向上取整,⌊⌋⌊⌋表示向下取整)。
A. 2N−22N−2
B. 2N−42N−4
C. ⌊3N/2⌋−2⌊3N/2⌋−2
D. ⌈3N/2⌉−2⌈3N/2⌉−2
在NN 个不相同数字的数组同时查找最大值与最小值的算法思想如下:
对NN个数字两两比较,再将较大的数字与最大值打擂台,较小的数字与最小值打擂台。 最坏情况下的算法时间复杂度:

当NN是奇数时,⌈N/2⌉×3⌈N/2⌉×3 。将第一个数赋值给最大值和最小值。然后将剩下N−1N−1个整数两两一组,共(N−1)/2(N−1)/2组,每组组内比较一次,与最大值比较一次,与最小值比较一次,共三次。总比较次数:3×(N−1)/23×(N−1)/2。
当NN是偶数时,将前两个数比较一次,将较大数赋值给最大值、较小数赋值给最小值。然后将剩下的N−2N−2个数两两一组,共(N−2)/2(N−2)/2组,每组组内比较一次,与最大值比较一次,与最小值比较一次,共三次。总比较次数3×(N−2)/2+13×(N−2)/2+1。
本题可以将尝试用N=3N=3排除选项C,答案:D。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值