如何根据另一数组的排序结果对目标数组进行排序?
数组同步排序实现方案
核心思路是先把两个数组的对应元素绑定到一起,按照数值数组的降序规则排序后,再拆分回原数组结构。以下是两种常用编程语言的实现方式:
JavaScript 实现
// 原始数组 const firstArr = ["Pizza", "Pasta", "Chicken Soup", "French Fries"]; const secondArr = [8, 6, 6, 9]; // 1. 将两个数组的对应元素配对 const pairedItems = firstArr.map((item, index) => ({ name: item, value: secondArr[index] })); // 2. 按value降序排序 pairedItems.sort((a, b) => b.value - a.value); // 3. 拆分回两个数组 const sortedFirstArr = pairedItems.map(item => item.name); const sortedSecondArr = pairedItems.map(item => item.value); console.log(sortedFirstArr); // ["French Fries", "Pizza", "Chicken Soup", "Pasta"] console.log(sortedSecondArr); // [9, 8, 6, 6]
Python 实现
# 原始数组 firstArr = ["Pizza", "Pasta", "Chicken Soup", "French Fries"] secondArr = [8, 6, 6, 9] # 1. 将两个数组的对应元素配对 paired_items = list(zip(firstArr, secondArr)) # 2. 按数值降序排序 paired_items.sort(key=lambda x: x[1], reverse=True) # 3. 拆分回两个数组 sorted_first_arr, sorted_second_arr = zip(*paired_items) # 如需转为列表格式(可选) sorted_first_arr = list(sorted_first_arr) sorted_second_arr = list(sorted_second_arr) print(sorted_first_arr) # ["French Fries", "Pizza", "Chicken Soup", "Pasta"] print(sorted_second_arr) # [9, 8, 6, 6]
注意点
- 当数值数组存在重复值时,排序后文本数组里对应重复值的元素会保留原数组中的相对位置(稳定排序),比如示例里两个
6对应的Chicken Soup和Pasta顺序和原数组一致。
内容的提问来源于stack exchange,提问作者Userx10xC
相关产品推荐
相关产品推荐

