排序的选择问题
2017-08-17 12:17
267 查看
希望用最快的速度从一个无序数组中挑选出其中前十个最大的元素,在以下的排序方法中(B) 快速排序 堆排序 归并排序 基数排序
题目不在乎空间只要速度,没记错应该是基数排序最快且稳定。
如果结合实际(顾及空间开销)考虑的话,我会选择堆排序,因为ABC时间复杂度(O(N*logN))虽然一样,但是堆排序在建堆(时间复杂度近似O(N))之后取十次大根堆的堆顶就行了,即不需要执行完整个堆排序,但A和C需要走完排序流程后才能取到最大十个元素。
假设你只有100MB的内存,需要对1GB的数据进行排序,最合适的算法是()
首先内存只有100Mb,而数据却有1Gb,所以肯定没法一次性放到内存去排序,只能用外部排序,而外排序通常是使用多路归并排序,即将原文件分解成多个能够一次性装入内存的部分(如这里的100Mb),分别把每一部分调入内存完成排序(根据情况选取适合的内排算法),然后对已经排序的子文件进行多路归并排序(胜者树或败者树)。
相关文章推荐
- 每天一个小程序——选择排序时的一个小问题!
- 【排序问题】选择排序
- 经典编程问题之:选择排序、冒泡排序、汉诺塔游戏,均用js代码实现
- 数据结构排序问题---选择---希尔---归并
- 关于数组的排序问题(冒泡排序,选择排序,插入排序)
- 关于数组的排序问题(冒泡排序,选择排序,插入排序)
- 双排序:从算法的选择到问题求解
- 递归的定义以及递归的示例(计算阶乘、计算斐波那契数、递归二分查找、回文串递归方法解决、汉诺塔问题、递归选择排序问题)
- C++对10个数选择排序的2个问题分享
- 链表问题---单链表的选择排序
- C语言 - 选择排序中的--异或交换--问题分析
- 简单LinuxC程序关于排序问题(冒泡排序与选择排序)
- Java数组-选择排序-排序的性能问题
- 织梦站内选择文件夹和图片文件排序问题
- 选择排序相关问题
- 排序 选择问题 Partition函数
- 如何实现在客户端,使CheckBox按照选择的顺序进行排序--来自博问的问题
- C语言实现 排序源程序(包括直接插入、希尔、冒泡、快速、简单选择、堆排序)
- sql where in 排序问题
- 【iOS学习笔记】iOS算法(二)之选择排序