【算法题】时间排序

同事在实际开发中遇到一个需求,有如下的日志信息,保存为一个二维列表,需要在列表中对每个子元素进行时间先后排序,最终的效果是二维列表的每个子元素中的子元素都是时间早的在最前面,同时二维列表子元素不改变顺序。

原二维列表如下:

list1 = [['6223050401584282|-5000|2019-03-03 12:08:39|90197004|8655833','6223050401584282|-5000|2019-03-03 12:09:06|90197004|8655833'],['6217770009360698|-18400|2019-03-03 16:25:16|90197004|8708615','6217770009360698|-18400|2019-03-03 16:26:26|90197004|8708853','6217770009360698|4400|2019-03-03 16:20:55|90197004|8707726','6217770009360698|14000|2019-03-03 16:22:35|90197004|8708064'],['6217776002675271|-5000|2019-03-03 17:24:23|90197004|8719748','6217776002675271|-5000|2019-03-03 17:24:34|90197004|8719759'],['6217776002675271|-5000|2019-03-03 17:26:30|90197004|8720077']]

处理之后如下:

[['6223050401584282|-5000|2019-03-03 12:08:39|90197004|8655833', '6223050401584282|-5000|2019-03-03 12:09:06|90197004|8655833'], ['6217770009360698|4400|2019-03-03 16:20:55|90197004|8707726', '6217770009360698|14000|2019-03-03 16:22:35|90197004|8708064', '6217770009360698|-18400|2019-03-03 16:25:16|90197004|8708615', '6217770009360698|-18400|2019-03-03 16:26:26|90197004|8708853'], ['6217776002675271|-5000|2019-03-03 17:24:23|90197004|8719748', '6217776002675271|-5000|2019-03-03 17:24:34|90197004|8719759'], ['6217776002675271|-5000|2019-03-03 17:26:30|90197004|8720077']]

上期答案:

def minor(matrix, n):
    return [[matrix[i][j] for j in list(range(n)) + list(range(n+1,len(matrix)))] for i in range(1,len(matrix))]

def determinant(matrix):
    if len(matrix) == 1:
        return matrix[0][0]
    elif len(matrix) == 2:
        return matrix[0][0] * matrix[1][1] - matrix[0][1] * matrix[1][0]
    else:
        result = 0
        for i in range(len(matrix)):
            result += (-1) ** i * matrix[0][i] * determinant(minor(matrix, i))
        return result