对10 9个元素进行排序从顶部选择10 1听起来像一个过度杀伤:log 2 N因子将大约为30,并且排序过程将移动大量数据.
为结果创建一个包含十个项目的数组,用大数组中的前十个元素填充它,并对10个元素的数组进行排序.现在从元素11开始遍历大数组.如果当前元素大于10元素数组中的最小项,找到插入点,移动十元素数组以为新元素腾出空间,并将其放入阵列.完成大数组后,小数组包含十个最大值.
对于"较大的十个值",您可以通过切换到最大堆数据结构来显着提高性能.从大数组的前十个项构造一个堆; 存储最小的数字以供将来参考.然后对于堆中最小数字之上的大数组中的每个数字,到目前为止执行以下操作:
完成后,堆将包含大数组中的十个最大项.