【发布时间】:2015-03-20 00:32:10
【问题描述】:
大家好,我需要知道我应该将什么传递给 qsort 函数来完成这项工作? 除了 qsort 函数的参数之外,其他所有内容都必须保持原样。
#include <iostream>
#include <stdlib.h>
#include <math.h>
using namespace std;
void printMatrix(int **matrix, int n){
for(int i = 0; i<n; i++){
for(int j =0 ; j < n; j++)
cout<<matrix[i][j]<<" ";
cout<<endl;
}
}
void initMatrix(int **matrix, int n){
for(int i = 0; i<n; i++){
for(int j =0 ; j < n; j++){
matrix[i][j] = rand()%10;
}
}
}
int compar(const void *a, const void *b){
int ia = *((int*)a);
int ib = *((int*)b);
return ia-ib;
}
void deleteMatrix(int **matrix){
delete [] matrix;
}
int main()
{
cout<<"How many rows and cols?"<<endl;
int n;
cin>>n;
int **matrix;
matrix = new int* [n];
for(int j = 0; j < n; j++)
matrix[j] = new int[n];
initMatrix(matrix,n);
printMatrix(matrix,n);
cout<<"Sorted matrix:"<<endl;
qsort(matrix,n*n,sizeof(int),compar); //<-----------
printMatrix(matrix,n);
deleteMatrix(matrix);
return 0;
}
附言 矩阵上必须有**指针。 提前致谢!
【问题讨论】:
-
一般来说在 C++ 中使用 std::sort 会更好。
-
如何对二维数组进行排序?你怎么知道
qsort元素的开头和数量? -
描述您对二维矩阵的排序标准。