草庐IT

C++并行排序

全部标签

java - 插入排序比 shell 排序快得多

我正在阅读Sedgewick的“算法”中有关排序的章节。在此过程中,我编写了3个基本的排序算法:选择、插入和shell排序。书中说,尽管这三者都具有二次最坏情况的复杂性,但shell排序应该比随机数据的插入排序快得多。在书中,他们获得了600倍的性能提升。但我在笔记本电脑上得到以下乘法器(几乎不随阵列大小的增加而改变):选择:5.5倍插入:1x外壳:1.8倍!困扰我的问题是-为什么shell排序比插入排序慢将近两倍?!我想,我的shellsort实现有问题。但我几乎是从书上抄来的:classShellSortextendsSort{//precalculatesequence:1,4,

java - 如何在 Java 中对返回 boolean 值的两个并行线程执行短路评估?

我正在寻找逻辑上等同于以下问题的指导:publicbooleanparallelOR(){ExecutorServiceexecutor=Executors.newFixedThreadPool(2);FuturetaskA=executor.submit(newSlowTaskA());FuturetaskB=executor.submit(newSlowTaskB());returntaskA.get()||taskB.get();//ThisisnotwhatIwant//Exceptionhandlingomittedforclarity}上面的构造给出了正确的结果但是总是等待

java - 并行执行竞争计算并丢弃除第一个完成的计算之外的所有计算

我编写了一个根据随机性生成迷宫的函数。大多数时候,这个函数非常快。但是偶尔,由于随机数运气不好,需要几秒钟。我想并行多次启动这个函数,让最快的函数“获胜”。Scala标准库(或Java标准库)是否为这项工作提供了合适的工具? 最佳答案 你可以使用Future:importscala.concurrent.Futureimportscala.concurrent.ExecutionContext.Implicits.globalvalfutures=for(_如果你想阻止(我想你会这样做),你可以使用Await.result:impo

java - Java 中使用 ArrayList 的基本冒泡排序

我正在实现一个比较器,但它不起作用,所以我想我应该编写一个基本的冒泡排序。int[]numbers={5,8,14,1,5678};inttempVar;for(inti=0;inumbers[j+1]){tempVar=numbers[j+1];numbers[j+1]=numbers[i];numbers[i]=tempVar;}}}for(inti=0;i本教程完全正确吗?https://blog.udemy.com/bubble-sort-java/我按照示例将其应用于数组列表中的姓氏,但结果有点古怪。Stringa;Stringb;Personc;Persond;for(in

java - Java 8 中的自定义排序映射

我有一个map列表,如下所示。我想在Java8中按自定义顺序对列表中的map进行排序。例如,下面是map列表。[{model=Ferrari},{model=Tesla},{model=Benz},{model=Honda}]如果我使用下面的代码对上面的map列表进行排序,它会按字母顺序排序。l.sort(Comparator.comparing((Mapmp)->mp.get("model")));给出下面的输出。[{model=Benz},{model=Ferrari},{model=Honda},{model=Tesla}]但我需要根据顺序(不是字母顺序)对这张map进行排序:本

java - 使用 Java Stream API 对数组进行部分降序排序

我需要知道如何使用StreamAPI按降序对原始唯一整数数组进行部分排序。比如有{1,2,3,4,5}这样的数组,我想得到{5,4,3,1,2}-首先是3个最大的元素,然后是其余的。甚至可以使用流吗?我检查了文档-有两种方法skip和limit但它们会更改流内容并从数组的开头开始工作。我可以像这样对整个数组进行排序Arrays.stream(arr).boxed().sorted(Collections.reverseOrder()).mapToInt(Integer::intValue).toArray();但是如何使这个排序部分化呢?我说StreamAPI是因为我希望它写得很好。而

java - 控制 Hibernate EnumType.STRING 属性的排序顺序

目前,我的项目使用@Enumerated(EnumType.ORDINAL),所以当我按此列排序时,它是根据枚举中的顺序排序的,这工作正常。但我需要向enum添加一些额外的值,这些值需要插入到枚举值列表的不同位置,不能只添加到底部以保持正确的排序顺序。如果我这样做,我的数据库就会乱七八糟。我将不得不编写一些脚本来将所有这些序数值转换为正确的新序数。有可能以后必须添加更多状态。由于我必须修复数据库中的所有数据,因此我希望只需执行一次,因为这将是一项艰巨的任务。所以我正在考虑切换到EnumType.STRING,这样就不必再次重新映射数据库中的序数值。但是如果我这样做,那么我该如何正确排序

java - 根据其中一个字段对元组进行排序

我的问题和下面的一样,但是答案很模糊,我不明白该如何解决。sortaListfromhighesttolowest如果您能更详细地描述如何执行此操作,将不胜感激。谢谢 最佳答案 试着运行我为你做的这个例子,想想发生了什么:importjava.util.ArrayList;importjava.util.Collections;importjava.util.Comparator;importjava.util.List;publicclassTuple{privateRname;privateSdata;privateTindex

java - 使用 SwingX 对 JXTable 进行排序

我正在使用来自SwingX组件的JXTable。如果我使用setSortable(booleanflag)方法,那么它将启用或禁用所有列的排序。根据我的要求,我想禁用几列的排序并启用其他列的排序。谁能帮助实现这个功能?感谢您的回复。你能帮我使用setSorterClass(StringsorterClassName)来禁用一列的排序吗?你能给我任何代码示例吗?这对我很有帮助。 最佳答案 SwingX支持TableColumnExt级别的每列可排序属性。它的默认值为true,在创建列后禁用它table.getColumnExt(myC

java - 顺序很少变化的快速排序

我正在开发一款具有ScrollView的2D游戏(想想红色警戒或塞尔达传说),但我在绘图方面遇到困难。基本上有两种类型的对象绘制在map上。有些位置固定(如树木和建筑物),有些位置移动(玩家、敌人、飞箭)。为了让事物以正确的方式出现在彼此面前,它们需要以特定的顺序绘制(首先是远处的物体,然后朝向“相机”)。现在,每次游戏更新(每秒100次)时,我都会对所有对象(两种类型)的列表进行排序,这感觉就像是对CPU时间的巨大浪费。对象的顺序很少发生变化,即使发生变化,它们通常也只会在列表中向上或向下移动一个位置。另一个问题是只需要考虑实际在屏幕上的对象。由于包含1000个对象的map可能会变得