gpt4 book ai didi

c - 如何使用 qsort 对二维矩阵的行进行排序?

转载 作者:太空宇宙 更新时间:2023-11-03 23:40:44 26 4
gpt4 key购买 nike

我的许多同事问我是否可以使用函数 qsort() 对二维数组的每一行进行排序来自 <stdlib.h>安排一个矩阵,如:

 5,  8,  7,  6,  1,  4,  3,  2, 11, 12, 10,  9, 

变成类似的东西:

 5,  6,  7,  8,  1,  2,  3,  4,  9, 10, 11, 12, 

最佳答案

问题的解决方案如下所示:

#include <stdio.h>   // scanf() printf()
#include <stdlib.h> // qsort()

int compare (const void *a, const void *b)
{
int x = *(int *)a;
int y = *(int *)b;

if (x<y) return -1;
if (x>y) return 1;
return 0;
}

int main()
{
// Syntax of a 2D Array: array[rows][cols]
int rows = 3, cols = 4;
int array[3][4] = { {5,8,7,6,}, {1,4,3,2}, {11,12,10,9} };

// Print the matrix unsorted:
printf("\nUnsorted rows:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%2d, ", array[i][j]);
}
printf("\n");
}

// Sort the matrix using qsort:
for(int j = 0; j < rows; j++)
qsort(array[j], cols, sizeof(int), compare);

// Print the matrix sorted:
printf("\nSorted rows:\n");
for (int i = 0; i < rows; i++) {
for (int j = 0; j < cols; j++) {
printf("%2d, ", array[i][j]);
}
printf("\n");
}

return 0;
}

输出:

Unsorted rows: 5,  8,  7,  6,  1,  4,  3,  2, 11, 12, 10,  9, Sorted rows: 5,  6,  7,  8,  1,  2,  3,  4,  9, 10, 11, 12, 

感谢 flukey 在以下位置提供的有用答案: Qsorting 2d pointer arrays

关于c - 如何使用 qsort 对二维矩阵的行进行排序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47016906/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com