二维数组按从小到大排序代码
时间: 2023-12-20 15:51:42 浏览: 86
以下是一个简单的示例代码,演示了如何对一个二维数组按照第一列元素从小到大进行排序:
```python
array = [[3, 1], [1, 2], [2, 3], [4, 4]]
sorted_array = sorted(array, key=lambda x: x[0])
print(sorted_array)
```
输出结果为:
```
[[1, 2], [2, 3], [3, 1], [4, 4]]
```
这里使用了Python内置的`sorted`函数,其中`key`参数指定了用于排序的关键字,即按照二维数组的第一列元素进行排序。`lambda`函数用于定义一个匿名函数,它返回二维数组中的第一列元素。
相关问题
在c语言中二维数组排序从小到大如何排序
在C语言中,对二维数组进行排序通常涉及到两步:首先提取每个元素(二维数组中的值),然后对这些一维的元素数组进行排序。这里假设我们要对一个整数类型的二维数组按行从小到大排序,可以分为以下几个步骤:
1. 定义一个辅助函数用于比较二维数组中的单个元素。
2. 使用嵌套循环遍历二维数组,将每一行的元素复制到一个一维数组中。
3. 对这个一维数组进行排序,可以使用标准库函数`qsort()`或者自定义排序算法(如冒泡、选择、插入等)。
4. 再次遍历已排序的一维数组,将其放回原始二维数组,但按照新的顺序。
下面是一个简单的示例,使用快速排序算法对整型二维数组按行进行排序:
```c
#include <stdio.h>
#include <stdlib.h>
// 比较函数,用于qsort()
int compare(const void *a, const void *b) {
int row_a = (*(int (*)[2]) a)[0];
int row_b = (*(int (*)[2]) b)[0];
return row_a - row_b; // 如果需要降序排序,则返回row_b - row_a;
}
void sort_2d_array(int arr[][2], int rows, int cols) {
if (rows > 0) {
int flat[] = {arr[0][0], arr[0][1]};
for (int i = 1; i < rows; i++) {
flat[i*2] = arr[i][0];
flat[i*2 + 1] = arr[i][1];
}
qsort(flat, rows * 2, sizeof(int), compare); // 排序一维数组
// 把排好序的一维数组放回二维数组
for (int i = 0, j = 0; i < rows * 2 && j < rows; i += 2, ++j) {
arr[j][0] = flat[i];
arr[j][1] = flat[i+1];
}
}
}
// 示例使用
int main() {
int arr[3][2] = {{3, 5}, {1, 4}, {2, 6}};
int rows = sizeof(arr)/sizeof(arr[0]);
int cols = sizeof(arr[0])/sizeof(arr[0][0]);
printf("Before sorting:\n");
for (int i = 0; i < rows; i++) {
printf("%d %d\n", arr[i][0], arr[i][1]);
}
sort_2d_array(arr, rows, cols);
printf("\nAfter sorting:\n");
for (int i = 0; i < rows; i++) {
printf("%d %d\n", arr[i][0], arr[i][1]);
}
return 0;
}
```
c语言二维数组从小到大排序
以下是两种C语言二维数组从小到大排序的例子:
1. 将二维数组的每一行进行从小到大的排序:
```c
#include <stdio.h>
int main() {
int a[3][4] = {{3,2,1,5},{6,5,4,3},{6,4,3,7}}, i, j, t, s;
for (i = 0; i < 3; i++) { // 行数
for (j = 0; j < 4 - 1; j++) { // 列数
for (s = j + 1; s < 4; s++) { // 上面的a[i][j]被固定,让固定的a[i][j]和a[i][s]比较,s每一行j后面的元素
if (a[i][j] > a[i][s]) {
t = a[i][j];
a[i][j] = a[i][s];
a[i][s] = t;
}
}
}
}
for (i = 0; i < 3; i++) {
for (j = 0; j < 4; j++) {
printf("%-3d", a[i][j]);
}
printf("\n");
}
return 0;
}
```
2. 将二维数组的每一列进行从小到大的排序:
```c
#include <stdio.h>
int main() {
int a[3][4] = { {1,12,2,11}, {3,10,4,9}, {5,8,6,7} }, i, j, q, temp;
for (i = 0; i <= 3; i++) { // 冒泡排序行
for (j = 0; j < 4 - 1; j++) { // 冒泡排序每行进行排序
for (q = 0; q < 4 - j - 1; q++) {
if (a[q][i] > a[q + 1][i]) {
temp = a[q + 1][i];
a[q + 1][i] = a[q][i];
a[q][i] = temp;
}
}
}
}
for (i = 0; i < 3; i++) { // 输出
for (j = 0; j < 4; j++) {
printf("%5d", a[i][j]);
}
putchar('\n');
}
return 0;
}
```
阅读全文