二维数组sort排序结果
时间: 2025-02-09 16:07:29 浏览: 43
### 对二维数组进行 `sort()` 排序
对于二维数组的排序,可以依据特定条件对每一行的数据进行排列。在 Python 中,`sort()` 方法可以通过指定键函数来实现复杂数据结构的排序。
#### 使用自定义键函数进行排序
当需要根据子列表中的某个元素作为关键字来进行排序时,可以传递一个 lambda 函数给 `key` 参数:
```python
matrix = [
[3, 'apple', 8],
[1, 'banana', 7],
[2, 'orange', 9]
]
# 按照每行的第一个元素升序排序
matrix.sort(key=lambda row: row[0])
print(matrix)
# 输出结果如下所示:
# [[1, 'banana', 7], [2, 'orange', 9], [3, 'apple', 8]]
```
如果希望按照其他列或者其他逻辑进行排序,则只需调整 lambda 表达式的返回值即可[^1]。
#### 处理更复杂的排序需求
有时可能需要基于多个字段组合起来决定顺序,比如先按分数降序再按名字字母表顺序升序:
```python
students_scores = [
['Alice', 88],
['Bob', 95],
['Charlie', 88],
['David', 70]
]
# 首先按成绩降序,其次按姓名升序
students_scores.sort(key=lambda student: (-student[1], student[0]))
print(students_scores)
# 结果将是这样的形式:
# [['Bob', 95], ['Alice', 88], ['Charlie', 88], ['David', 70]]
```
这里 `-student[1]` 是为了达到降序的效果;而 `student[0]` 则保持默认的字符串比较方式即自然字典序[^2]。
#### C++ 实现示例
而在 C++ 中,虽然标准库也提供了类似的接口用于容器类型的排序操作,但对于原始指针指向的多维数组来说,默认情况下并不支持直接调用 sort 函数处理。因此通常会采用 STL 容器如 vector 来代替传统意义上的静态分配或多级动态分配形成的所谓“二维数组”,并利用其内置的支持来自定义比较规则完成任务[^3]。
```cpp
#include <algorithm>
#include <vector>
struct Record {
int id;
double score;
bool operator<(const Record& other) const { return this->score > other.score; }
};
std::vector<Record> records = {{1, 8.5}, {2, 9.2}, {3, 7.6}};
std::sort(records.begin(), records.end());
// 此处实现了记录集按照得分从高到低排序的功能。
```
阅读全文
相关推荐


















