代码之家  ›  专栏  ›  技术社区  ›  vad

在多列上排序二维数组

  •  4
  • vad  · 技术社区  · 14 年前

    谢谢

    2 回复  |  直到 14 年前
        1
  •  9
  •   Michael Aaron Safyan    11 年前

    你可以用 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);
     // ...
    
        2
  •  0
  •   Carlos René Cerrato Estrada    8 年前

    我使用了以下代码:

    // 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);