当前位置: 首页 > news >正文

山东省建设管理中心网站做企业网站需要注意哪些

山东省建设管理中心网站,做企业网站需要注意哪些,如何做监控网站,北京注册公司地址新规定背景 最近在实现一个需求,需要对大量数据中排序出前N,最暴力的方法肯定是直接全量排序。这里很明显是可以不用全量排序的,取前N,我们自然而然可以想到一个算法——堆排序。 一开始自己先写好了一版,后来想起&#xff…

背景

最近在实现一个需求,需要对大量数据中排序出前N,最暴力的方法肯定是直接全量排序。这里很明显是可以不用全量排序的,取前N,我们自然而然可以想到一个算法——堆排序。
一开始自己先写好了一版,后来想起,这个完全可以交给AI来实现,在好奇心的驱使下,于是我让ChatGPT实现了一个topN的算法,于是有了这篇文章。

测试

以下只将对项目业务进行简化:直接排序一个int数组,长度100w,排出top 1w,模拟100次。
测试在原始数组不同情况下,各个实现的实际耗时。

public class MyTest {private static int totalCount = 100_0000;//总数量private static int rankSize = 10000;//排行榜长度private static int batch = 100;//测试次数public static void main(String[] args) {List<Integer> values = new ArrayList<>();for (int i = 0; i < totalCount; i++) {values.add(i);}//默认递增Collections.shuffle(values);//打乱顺序//Collections.reverse(values);//递减顺序topN_NiuMa(values);topN_ChatGPT(values);topN_BruteForce(values);}//牛马版private static void topN_NiuMa(List<Integer> values) {long startTime = System.currentTimeMillis();for (int i = 0; i < batch; i++) {PriorityQueue<Integer> queue = new PriorityQueue<>(rankSize);for (Integer value : values) {queue.offer(value);if (queue.size() > rankSize) {queue.poll();}}}long endTime = System.currentTimeMillis();long cost = endTime - startTime;System.out.println("牛  马  版(100次):" + cost + " ms");}//ChatGPT版private static void topN_ChatGPT(List<Integer> values) {long startTime = System.currentTimeMillis();for (int i = 0; i < batch; i++) {PriorityQueue<Integer> queue = new PriorityQueue<>(rankSize);for (Integer value : values) {if (queue.size() < rankSize) {queue.offer(value);} else if (value > queue.peek()) {queue.poll();queue.offer(value);}}}long endTime = System.currentTimeMillis();long cost = endTime - startTime;System.out.println("ChatGPT版(100次):" + cost + " ms");}//暴力版public static void topN_BruteForce(List<Integer> values) {long startTime = System.currentTimeMillis();for (int i = 0; i < batch; i++) {List<Integer> values1 = new ArrayList<>(values);Collections.sort(values1, new Comparator<Integer>() {@Overridepublic int compare(Integer o1, Integer o2) {return Integer.compare(o2, o1);}});}long endTime = System.currentTimeMillis();long cost = endTime - startTime;System.out.println("暴  力  版(100次):" + cost + " ms");}
}

结果

待排数据递增(与目标相反)

牛 马 版(100次):8977 ms
ChatGPT版(100次):8874 ms
暴 力 版(100次):377 ms
在这里插入图片描述

待排数据递减(与目标相同)

牛 马 版(100次):9342 ms
ChatGPT版(100次):516 ms
暴 力 版(100次):338 ms
在这里插入图片描述

待排数据随机(符合实际情况)

牛 马 版(100次):13355 ms
ChatGPT版(100次):2539 ms
暴 力 版(100次):19483 ms
在这里插入图片描述

结论

暴力版,在原始数据有序的情况下,表现出惊人的性能,这里得益于java底层对排序算法的优化。
牛马版,在原始数据有序的情况下表现略微优于完全无序的情况,但总体表现不佳。
ChatGPT,在原始数据与目标顺序形的情况下表现良好,原始数据与目标数据相反时,表现较差,原始数据无序的情况下表现最优,这也是最正统的topN算法的实现。
在实际生产环境中,正统的topN算法是有不错的表现的。

http://www.dtcms.com/a/521078.html

相关文章:

  • 《信息系统项目管理师》案例分析题及解析模拟题4
  • 摄像网站建设个人网站的设计流程
  • 毕业设计成品网站优质院校建设网站
  • spark动态分区参数spark.sql.sources.partitionOverwriteMode
  • 绿算GP Spark引爆关注,成为AI工厂存储利器
  • 免费个人网站自助建设哈尔滨站建筑面积
  • 算法17.0
  • 【应用统计学相关会议】第三届应用统计、建模与先进算法国际学术会议(ASMA 2025)
  • 赌求网站开发做好的网页上传到wordpress
  • php开发网站上海市嘉定建设局网站
  • 电话交换机 3CX 数据存储在 AWS S3 的配置文档
  • AS32S601ZIT2型MCU在人防工程报警及控制设备中的应用与国产化优势
  • 阮一峰《TypeScript 教程》学习笔记——symbol 类型
  • 网站建设销售信wordpress国内图床
  • 天津高端网站php开发网站
  • PLL输出频谱分析 - 杂散和相位噪声检测
  • C++11 --- 右值引用、移动语义
  • 【Linux基础知识系列:第一百五十九篇】磁盘健康监测:smartctl
  • RA-Eco-RA4M2之RTC电子钟
  • 淘宝属于什么网站怎么做便宜做网站8818
  • 网站设计的公司怎么样php免费源码网站
  • 做品牌折扣微信推广的网站门户网站建设依据
  • NumPy 与 Matplotlib 使用教程
  • 如何做网站百科房地产销售述职报告
  • 做多语言网站教程建筑工程网络计划技术与应用
  • 微软Agent Framework
  • 上海app网站建设雷山网站快速排名
  • 深度学习基础:Tensor(张量)的创建方法详解
  • HTML5基础——18、CSS滤镜
  • 从零开始的C++学习生活 13:红黑树全面解析