在多列上排序二维数组

时间:2010-06-15 00:43:06

标签: c++ c algorithm sorting

我需要使用C或C ++对多列的二维二进制数组进行排序。有人能指出我应该使用的算法还是具有此功能的现有库(可能是boost?)?

我有一种感觉,写一个递归函数可能是要走的路但我懒得写出算法或者自己实现它,如果已经在其他地方完成的话。 : - )

由于

2 个答案:

答案 0 :(得分:9)

您可以使用std::sort(C ++)或qsort(C或C ++)来执行排序操作。棘手的部分是您需要定义自定义比较函数来比较您的行。例如:

 bool compareTwoRows(double* rowA, double* rowB){
     return ( (rowA[0]<rowB[0]) || ((rowA[0]==rowB[0])&&(rowA[1]<rowB[1])) );
 }

 // ...
 double** two_dimensional_array = // ...
 int rows = // ... number of rows ... 
 std::sort(two_dimensional_array,two_dimensional_array+rows,&compareTwoRows);
 // ...

答案 1 :(得分:0)

我使用了以下代码:

// Order function. Change the 2 for the column number you want to use
bool compareRowsByColumn(vector<double> rowA, vector<double> rowB){
  return (rowA[2] < rowB[2]);
}

// The sorting line. Matrix is the two dimensional vector.
sort(matrix.begin(), matrix.end(), &compareRowsByColumn);