华师一附中OI组

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
查看: 1161|回复: 0
打印 上一主题 下一主题

求第k大元素

[复制链接]

738

主题

1485

帖子

5420

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
5420
跳转到指定楼层
楼主
发表于 2019-4-20 15:30:14 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
给定一个数组假设10个元素,分别是6,3,7,5,9,8,1,2,0,4求其中第k大的元素
有一个很直观的做法就是先排序然后输出,这样很浪费,因为没有必要全部排序,
也有人会想到用选择排序做k次,或者冒泡k次,这样其实也有些浪费。
最好的做法是二分:假设k=3
1、第1个元素是6,把比6小的数字网左边换,比6的大的数字往右边换,这样1,2,0,4到了左边,7,9,8,到了右边,6 在第7位,数组变成了1,3,0,5,2,6,8,9,7
2、现在只需要在1,3,0,5,2,里面去找第3大的元素,继续
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|Archiver|手机版|小黑屋|服务支持:DZ动力|华师一附中OI组  

GMT+8, 2024-11-1 18:39 , Processed in 0.120082 second(s), 24 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表