栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Java

Top n排序算法

Java 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Top n排序算法

数据结构中, 常用的算法有,交换排序(冒泡排序)、选择排序和插入排序,还有相应改进算法快速排序、堆排序和希尔排序。

简单的排序(交换排序、选择排序和插入排序),平均时间复杂度都是O(n^2) 即n平方,每一趟排序平均要查询n个元素。它们改进后的算法,快速排序、堆排序平均时间复杂度都是

 希尔排序平均时间复杂度是:

 这些算法的排序研究都是基于将所有元素都排序好的。但Top n只需要先出前几名最大或最小值。  那我们就在以上几种算法中,选择每趟都可以找到一个当前最大值的排序算法就好。以上算法都有两层循环,top n求解时,外层循环只需要运行指定次数, 如100个分数排名,找出前10名的, 则我们只需要要外循环运行10次。内循环,一般算法是运行n次,改进的算法是运行

 。

从以上分析,可以选出:

交换排序(冒泡排序)、选择排序,堆排序。

那快速排序可不可以呢?  那是不可以的。因为快速排序一趟下来,能确定的是轴元素的最终位置,但轴元素却不是当前排序元素的最值元素。

所以以上列出的最高效的top n算法,就是堆排序了。它的空间复杂度是O(1)。

留个小问题,除了时间复杂度,空间复杂度外,关于编写代码多少的编码复杂度,小伙伴们有了解吗?

这可以关系到你写的代码精不精炼的评判标准。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/683435.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号