2011年1月1日

面试题 M大小的数组中选出前N个元素

摘要: 已知一个大小为M的数组 里面放着M个整数现在要找出前n个最大的元素问: 最优的算法,时间复杂度和空间复杂度解法有很多,最好的不好找, 这里随便先举几个一般的: 1.先给M的数组做一次排序 那么前n个元素就是结果, 假设用快速排序 那么时间复杂度就是 M*logM 2.已知使用冒泡法找出最大的一个元素, 需要M次, 那么找出N个,就需要M*N ,如果N很小这个算法就很优化补充以下是个人觉得最好的算法(快速排序的一部分)随机在m中挑选一个值, 然后比m小的放在m左边, 比m大的放在m右边假设右边有c个元素, 如果c小于5个, 在左边的元素中继续寻找 最大的n-c个元素,否则丢弃所有左侧元素,... 阅读全文

posted @ 2011-01-01 12:58 听说读写 阅读(1963) 评论(1) 推荐(0)

导航