You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否利用给定的稳定整数排序函数实现整数对的稳定排序?

解决方案:仅用提供的sort函数即可实现需求

当然可以只用给定的sort函数完成按第二个元素的稳定排序,完全不需要自己编写排序逻辑!下面是具体的思路和实现步骤:

核心思路

通过构造包含原位置信息的排序键,把“按第二个元素稳定排序”的需求转化为普通的整数数组排序,利用sort的升序稳定排序特性完成目标。

具体步骤

假设我们有整数对数组P,长度为n:

  1. 生成排序键数组:
    对每个索引i(从0开始)的整数对(a, b),计算排序键为:
    key = b * n + i
    
    这个键的设计逻辑:
    • 若两个整数对的第二个元素b不同,b更小的键值必然更小,排序后会排在前面;
    • 若两个整数对的b相同,原索引i更小的键值会更小(因为b*n部分相等,加上更小的i结果更小),这样就能保留原数组的相对顺序,满足稳定排序的要求。
  2. 排序键数组:
    使用提供的sort函数对生成的键数组进行升序排序,得到排序后的键数组sorted_keys。
  3. 还原排序后的整数对数组:
    遍历sorted_keys,对每个键k,计算原索引original_index = k % n,取出P[original_index],按顺序组合就是最终的排序结果。

示例验证

用你给出的示例数组验证:
原数组P = [(1,2),(1,1),(0,2),(3,2),(4,1)],n=5:

  • 生成的键数组为[10, 6, 12, 13, 9]
  • 经sort排序后得到sorted_keys = [6, 9, 10, 12, 13]
  • 计算原索引:6%5=1、9%5=4、10%5=0、12%5=2、13%5=3
  • 取出对应元素:(1,1),(4,1),(1,2),(0,2),(3,2),完全符合预期结果。

内容的提问来源于stack exchange,提问作者user308485

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.27 10:02:10