V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
helloword123
V2EX  ›  程序员

一个排序问题

  •  
  •   helloword123 · 27 天前 · 1377 次点击
    Integer[] original = {1, 2, 3, 4, 5, 6};
    Integer[] sort1 = {6, 1, 3};
    Integer[] sort2 = {2, 5, 4 ,6, 1};
    Integer[] sort3 = {4, 1};
    original 为原始序列,sort1 ,sort2 ,sort3 , 为给出的逻辑排序。
    要求:
    1 、对原始数据应用以下 3 个排序
    2 、后面的排序 覆盖前面的 所以最终展示的是 1,6 ,不是 6 ,1
    3 、应用完所有的 排序组后,保证最终结果符合 排序里面的值的逻辑顺序
    4 、每个 sort 里面值是唯一的,不同的 sort 里面的值 可能有重复

    各位屌大的道友,谁来解解看。
    8 条回复    2024-10-31 16:29:30 +08:00
    gesse
        1
    gesse  
       27 天前
    你这个应该是在后续排序覆盖前面排序,并需要尽量保持前面排序内容

    那应该最后是 61 , 而不是 16 ,因为 461 能满足所有三种排序方式。
    qiangshenqi
        2
    qiangshenqi  
       27 天前
    我直接就丢给 chatgpt 。。。
    InkStone
        3
    InkStone  
       27 天前   ❤️ 1
    如果能保证输入数据不成环的话,这不就拓扑排序么
    sagaxu
        4
    sagaxu  
       27 天前
    把 sort1/sort2/sort3 处理成 map ,index1/index2/index3 ,index[n]表示 n 在 sort 中的位置

    然后自定义 cmp 方法,用稳定排序,从比较数值变成比较 indexN 中查找出的 index ,这里需要理清规则,每个元素在 3 个 sort 中都可能存在或不存在,无法根据三个 sort 排序的,定义为相等
    lpe234
        5
    lpe234  
       27 天前
    先合并规则,然后再排序。
    MYDB
        6
    MYDB  
       26 天前 via iPhone
    @qiangshenqi GPT 对于逻辑问题的代码不擅长
    helloword123
        7
    helloword123  
    OP
       25 天前
    @sagaxu 这种也不行好像
    helloword123
        8
    helloword123  
    OP
       25 天前
    @lpe234 规则合并可以看成把 sort1 作为 orignal 递归是个思路
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   5342 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 23ms · UTC 09:39 · PVG 17:39 · LAX 01:39 · JFK 04:39
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.