当前位置: 面试刷题>> 按照颜色对数组排序 (经典算法题500道)


题目描述补充

给定一个二维数组colors,其中每个元素代表一个物体,物体的颜色由其内部子数组的第一个元素表示(假设颜色以字符串形式给出,如"red", "blue", "green"等),剩余元素可能包含该物体的其他属性(如大小、重量等,但本题不考虑这些属性)。要求编写一个函数,根据颜色的字典序对数组进行排序,即相同颜色的物体应该排在一起,并且颜色按照字典序从小到大排列。

示例输入

[
    ["red", 10],
    ["blue", 5],
    ["green", 8],
    ["red", 20],
    ["blue", 15]
]

示例输出

[
    ["blue", 5],
    ["blue", 15],
    ["green", 8],
    ["red", 10],
    ["red", 20]
]

PHP代码示例

function sortColors($colors) {
    usort($colors, function($a, $b) {
        return strcmp($a[0], $b[0]);
    });
    return $colors;
}

// 示例用法
$colors = [["red", 10], ["blue", 5], ["green", 8], ["red", 20], ["blue", 15]];
$sortedColors = sortColors($colors);
print_r($sortedColors);

Python代码示例

def sort_colors(colors):
    return sorted(colors, key=lambda x: x[0])

# 示例用法
colors = [["red", 10], ["blue", 5], ["green", 8], ["red", 20], ["blue", 15]]
sorted_colors = sort_colors(colors)
print(sorted_colors)

JavaScript代码示例

function sortColors(colors) {
    return colors.sort((a, b) => a[0].localeCompare(b[0]));
}

// 示例用法
const colors = [["red", 10], ["blue", 5], ["green", 8], ["red", 20], ["blue", 15]];
const sortedColors = sortColors(colors);
console.log(sortedColors);

码小课网站提示: 码小课网站中有更多关于算法和数据结构的相关内容,包括排序算法、数组操作、函数式编程等,欢迎大家访问学习,不断提升自己的编程能力。

推荐面试题