当前位置: 面试刷题>> 玩具工厂 (经典算法题500道)


题目描述补充

在玩具工厂中,工人们需要按照特定的规则对一系列玩具进行排序。每个玩具都有一个唯一的标识符(ID)和一个优先级值(priority)。工厂要求工人们根据玩具的优先级值对它们进行升序排序,如果优先级相同,则按照ID的升序排序。

你需要编写一个函数,该函数接收一个包含玩具信息的数组作为输入,每个玩具信息是一个包含ID和优先级的对象。函数应返回排序后的玩具信息数组。

示例输入

[
    {"id": 3, "priority": 2},
    {"id": 1, "priority": 1},
    {"id": 2, "priority": 2},
    {"id": 4, "priority": 3}
]

期望输出

[
    {"id": 1, "priority": 1},
    {"id": 3, "priority": 2},
    {"id": 2, "priority": 2},
    {"id": 4, "priority": 3}
]

PHP代码示例

<?php

function sortToys($toys) {
    usort($toys, function($a, $b) {
        if ($a['priority'] == $b['priority']) {
            return $a['id'] - $b['id'];
        }
        return $a['priority'] - $b['priority'];
    });
    return $toys;
}

// 示例使用
$toys = [
    ["id" => 3, "priority" => 2],
    ["id" => 1, "priority" => 1],
    ["id" => 2, "priority" => 2],
    ["id" => 4, "priority" => 3]
];

$sortedToys = sortToys($toys);
print_r($sortedToys);

?>

Python代码示例

def sort_toys(toys):
    toys.sort(key=lambda x: (x['priority'], x['id']))
    return toys

# 示例使用
toys = [
    {"id": 3, "priority": 2},
    {"id": 1, "priority": 1},
    {"id": 2, "priority": 2},
    {"id": 4, "priority": 3}
]

sorted_toys = sort_toys(toys)
print(sorted_toys)

JavaScript代码示例

function sortToys(toys) {
    return toys.sort((a, b) => {
        if (a.priority === b.priority) {
            return a.id - b.id;
        }
        return a.priority - b.priority;
    });
}

// 示例使用
const toys = [
    {id: 3, priority: 2},
    {id: 1, priority: 1},
    {id: 2, priority: 2},
    {id: 4, priority: 3}
];

const sortedToys = sortToys(toys);
console.log(sortedToys);

// 码小课网站中有更多相关内容分享给大家学习

这些代码示例展示了如何在不同编程语言中实现根据优先级和ID对玩具进行排序的功能。

推荐面试题