分治法-求解众数问题Java
1.众数问题:
给定含有N个元素的多重集合S,每个元素在S中出现的次数称为该元素的重数,多重集合S中重数最大的元素称为多重集合S的众数,众数的重数称为多重集合S的重数,试求一个给定多重结合的重数和众数。
例如:S={a,b,b,b,f,f,4,5}的重数是3,众数是b
2.算法思路:
首先为集合S排序,使之成为有序的数组(使用Arrays类的sort方法)
取中位数为众数,中位数的个数为重数,确定左右界
向左界递归,取中位数为众数,取中位数个数为重数,比较
向右界递归,取中位数为众数,取中位数
原创
2021-09-22 16:31:11 ·
1774 阅读 ·
0 评论