首页 > 试题广场 >

寻找一数组中前K个最大的数

[问答题]
寻找一数组中前K个最大的数
典型的区间第k大(小)问题,***树直接做
发表于 2019-05-28 16:26:42 回复(0)
把前k个数建成最小堆,然后将栈顶元素与剩余的比较,如果大于,则交换,并调整最小堆,重复这个过程
发表于 2019-05-07 09:23:34 回复(0)
经典的topk问题 比较好的方法是用堆排序的思想,先建成前k个数的最大堆,然后把堆顶元素与剩下的数比较,如果发现了大于堆顶的数就把堆顶元素和该数交换,然后再调整成最大堆,直到遍历结束,这种方法时间复杂度是n×logk,而冒泡等直接遍历的时间复杂度是n×n 还有一种更好的方法是快排的思想,有兴趣的自己去看
发表于 2019-03-11 13:23:12 回复(1)
选出K个值,排序,找出最小值,新数字如果大余最小的。删除换最小值。排序。重复。
发表于 2019-01-05 16:25:41 回复(0)
int max, k ,i; for(i=0; i++; i<k-1>a[i+1]) max=a[i]; }</k-1>
发表于 2019-04-17 22:38:03 回复(0)
先给数组从大到小排序,取k个数
发表于 2019-03-21 08:26:49 回复(0)
冒泡排序
发表于 2019-03-14 23:22:16 回复(0)
冒泡排序k趟
发表于 2019-03-09 12:38:10 回复(0)

传入数组和k,用冒泡排序遍历k个数,

发表于 2019-03-07 09:26:44 回复(0)
冒泡排序思路: ①外层循环初始为0,判断结束条件为数组的末尾,步进递增1 ②内层循环初始条件为外层循环+1,判断结束条件为数组末尾,步进递增1 ③判断外内层循环索引小于外层循环,实现交换
发表于 2019-02-23 22:24:44 回复(0)
最大堆
发表于 2019-01-15 16:18:20 回复(0)
用选择排序只走k趟,后k个数遍对应前k大的数
发表于 2018-12-30 23:20:54 回复(0)
遍历0-k的值,用冒泡排序
发表于 2018-12-24 00:07:55 回复(1)