按时间和权重对记录进行排序

时间:2015-09-11 06:56:43

标签: java algorithm sorting

我有一组输入的日志记录,其中包含属性,记录,时间和权重。

我需要一个输出,其中前5个记录应该基于时间,接下来的5个应该根据权重进行排序。不允许重复。

java中是否有数据结构或任何类型的算法来解决这类问题。

输入

Record  Time        Weightage

R1      11:40:52    1 
R2      11:39:23    2
R3      11:39:21    2
R4      11:38:44    5
R5      11:37:00    3
R6      11:36:12    3
R7      11:35:12    1
R8      11:34:00    1
R9      11:33:04    5
R10     11:32:02    4
R11     11:31:44    3
R12     11:30:12    2
R13     11:29:02    5
R14     11:28:28    6
R15     11:27:18    4
R16     11:26:19    6
R17     11:25:12    7
R18     11:24:03    5
R19     11:23:03    4
R20     11:22:05    4
R21     11:21:06    6
R22     11:20:00    4
R23     11:19:00    9

输出

Record  Time        Weightage
R1      11:40:52    1
R2      11:39:23    2
R3      11:39:21    2
R4      11:38:44    5
R5      11:37:00    3
R23     11:19:00    9
R17     11:25:12    7
R14     11:28:28    6
R16     11:26:19    6
R21     11:21:06    6
R6      11:36:12    3
R7      11:35:12    1
R8      11:34:00    1
R9      11:33:04    5
R10     11:32:02    4
R13     11:29:02    5
R18     11:24:03    5
R15     11:27:18    4
R19     11:23:03    4
R20     11:22:05    4
R11     11:31:44    3
R12     11:30:12    2
R22     11:20:00    4

1 个答案:

答案 0 :(得分:0)

如我所见,列表按time排序。
将另一个属性添加到列表中,picked(比如)作为布尔值并最初将all设置为false。 如果空间没有问题,请复制数据并根据weight对其进行排序。

现在,从list1中选择1st 5(按时间排序)并设置他们的picked attr。为真。现在,从list2开始挑选​​,并检查您正在挑选的记录,如果其picked值在list1中为false。 (如果是true,请不要选择此项)。当您从此列表中选择5时,从list1中的第6项继续,同时从list2中检索其picked属性。要检查picked值,请使用record_no属性。