//方式一:数组定义与排序在同一个函数中,主要针对直接定义的二维数组
int cmp6(const void *a, const void *b) {
int *p1 = (int *)a;
int *p2 = (int *)b;
return p1[1] < p2[1] ? -1 : 1; //按照第二列的值进行升序排序
}
int main(void)
{
int points[4][2] = {{10,16},{2,8},{1,6},{7,12}};
qsort(points, 4, sizeof(int) * 2, cmp6);
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 2; j++) {
printf("%d ", points[i][j]);
}
printf("\n");
}
}
//方式二:二维数组通过参数传入,在函数内排序,主要针对malloc得来的二维数组
int cmp5(const void *a, const void *b) {
int *p1 = *(int **)a;
int *p2 = *(int **)b;
return p1[1] < p2[1] ? -1 : 1;
}
int findMinArrowShots(int** points, int pointsSize, int* pointsColSize){
if (!pointsSize) return 0;
qsort(points, pointsSize, sizeof(int *), cmp5);
int pos = points[0][1];
int ans = 1;
for (int i = 0; i < pointsSize; ++i) {
if (points[i][0] > pos) {
pos = points[i][1];
++ans;
}
}
return ans;
}
使用qsort函数对二维数组排序
于 2022-06-05 18:42:31 首次发布
本文介绍了两种对二维数组进行排序的方法。方式一是直接在定义数组的函数中完成排序,适用于静态定义的二维数组;方式二是通过参数传入动态分配的二维数组并在函数内部进行排序。排序依据为数组的第二列,采用升序排列。示例代码中使用了`qsort`函数,并展示了排序后的结果。
1136

被折叠的 条评论
为什么被折叠?



