我有一个二维(3x7)数组。我想按行对它进行排序。我已经写了一个示例代码。
#define numRows 3
#define numCols 7
int arr[numRows-1][numCols-1] = {{0,1,2,3,4,5,6}, {7,8,9,10,11,12,13},{14,15,16,17,18,19,20}};
sort_row(arr);
void sort_row(int *p)
{
for (int i = 0 ;i<numRows-1;i++)
{
sort(p[i][]);
}
}
void sort(int *p)
{
for ( int c = 1 ; c <= numCols - 1 ; c++ )
{
for ( d = 0 ; d <= c - 1 ; d++ )
{
if ( array[c] < array[d] )
{
swap = array[d];
array[d] = array[c];
for ( int k = c ; k > d ; k-- )
array[k] = array[k-1];
array[k+1] = swap;
}
}
}
}我正在对每一行进行插入排序。
Qn:我是否将每一行都正确地传递到排序中?我该如何改进它呢?
寻找改进建议,可以改进或指出代码中的错误
发布于 2012-02-24 21:21:24
在@unwind ans上搜索后,得到了这样的答案:
#include <stdlib.h>
#define numRows 3
#define numCols 7
int arr[numRows-1][numCols-1] = {{0,1,2,3,4,5,6}, {7,8,9,10,11,12,13},{14,15,16,17,18,19,20}};
int compare (const void * a, const void * b)
{
return ( *(int*)a - *(int*)b );
}
void sort_row(int *p)
{
for (int i = 0 ;i<numRows-1;i++)
{
qsort (p[i], 7, sizeof(int), compare);//sort(p[i]);
}
}https://stackoverflow.com/questions/9431115
复制相似问题