java - 在java中,排序时,当我有相同的值时,特定问题的解决方案是什么

标签 java algorithm sorting process operating-system

所以我在这里遇到这个问题。我想编写非抢占式优先级调度算法,我的方法是对其进行排序,因为您想按照算法所述首先获得最高优先级。如果我在数组中有优先级值的话。示例:工作1 = 2 ;工作2=5;工作3=2;工作4 = 4。

该算法是,当存在两个或多个具有相同优先级的作业时,处理器会分配给“先到达”的作业。从上面的示例来看,应该以这种方式排序(降序):job2 - job4 - job1 - job3。

由于 job1 和 job3 具有相同的优先级,因此我希望 job1 先于 job3。

现在我的问题是这样的。排序首先得到job1而不是job3的解决方案是什么?或者它已经在系统中了,我可以自动解决这个问题。因为我以前从未尝试过 job3 是第一个还是最后一个。

最佳答案

Priority Queue Data Structure Java 中已经存在,您可以使用它。线程安全版本是 - PriorityBlockingQueue

您可以定义自定义比较器,以根据优先级对队列进行排序,同时在优先级相等时保持插入顺序。

这里有很多例子 - Java: How do I use a PriorityQueue?

列出的其他比较策略 here

引用this也有一个

希望对你有帮助!!

关于java - 在java中,排序时,当我有相同的值时,特定问题的解决方案是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34893903/

相关文章:

java - 如何从 maven pom 文件构建项目

c++ - 如何组合两个具有相同代码的模板函数?

string - 为什么 sorted "tan"!= "ant"?

javascript - 如何正确排序整数数组

c# - 使用 MVVM 在 WPF DataGrid 中自定义排序

java - 如何使用 Swing 以编程方式制作这种网格?

java - 什么是NullPointerException,我该如何解决?

java - 谷歌应用程序数据存储区中的外键

algorithm - 添加、获取第 k 个最大的数据结构是 O(log n) 和 O(1)

algorithm - 迭代加深DFS寻找简单路径