• 请不要在回答技术问题时复制粘贴 AI 生成的内容
helloword123
V2EX  ›  程序员

一个排序问题

  •  
  •   helloword123 · Oct 29, 2024 · 2937 views
    This topic created in 744 days ago, the information mentioned may be changed or developed.
    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 replies  •  2024-10-31 16:29:30 +08:00
    gesse
    gesse
    Oct 29, 2024
    1
    你这个应该是在后续排序覆盖前面排序,并需要尽量保持前面排序内容

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

    然后自定义 cmp 方法,用稳定排序,从比较数值变成比较 indexN 中查找出的 index ,这里需要理清规则,每个元素在 3 个 sort 中都可能存在或不存在,无法根据三个 sort 排序的,定义为相等
    lpe234
    lpe234
    Oct 29, 2024
    5
    先合并规则,然后再排序。
    MYDB
    MYDB
    Oct 29, 2024 via iPhone
    6
    @qiangshenqi GPT 对于逻辑问题的代码不擅长
    helloword123
    helloword123
    OP
    Oct 31, 2024
    7
    @sagaxu 这种也不行好像
    helloword123
    helloword123
    OP
    Oct 31, 2024
    8
    @lpe234 规则合并可以看成把 sort1 作为 orignal 递归是个思路
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   1167 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 17:50 · PVG 01:50 · LAX 09:50 · JFK 12:50
    ♥ Do have faith in what you're doing.