Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在多个列上排序二维数组 我需要用C或C++来在多个列上排序一个2元的双倍数组。有人能告诉我应该使用哪种算法,或者现有的具有这种功能的库(可能是boost?)吗_C++_C_Algorithm_Sorting - Fatal编程技术网

在多个列上排序二维数组 我需要用C或C++来在多个列上排序一个2元的双倍数组。有人能告诉我应该使用哪种算法,或者现有的具有这种功能的库(可能是boost?)吗

在多个列上排序二维数组 我需要用C或C++来在多个列上排序一个2元的双倍数组。有人能告诉我应该使用哪种算法,或者现有的具有这种功能的库(可能是boost?)吗,c++,c,algorithm,sorting,C++,C,Algorithm,Sorting,我有一种感觉,编写递归函数可能是一种方法,但我太懒了,无法写出算法或自己实现它(如果在其他地方已经实现了)。:-) 谢谢您可以使用(C++)或(C或C++)执行排序操作。棘手的部分是,您需要定义一个自定义比较函数来比较行。例如: bool compareTwoRows(double* rowA, double* rowB){ return ( (rowA[0]<rowB[0]) || ((rowA[0]==rowB[0])&&(rowA[1]<rowB[1

我有一种感觉,编写递归函数可能是一种方法,但我太懒了,无法写出算法或自己实现它(如果在其他地方已经实现了)。:-)

谢谢

您可以使用(C++)或(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);
 // ...
布尔比较器窗口(双*行A,双*行B){

return((rowA[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);
//Order函数。更改要使用的列号的2
布尔比较器按列排序(向量行A、向量行B){
返回(rowA[2]
您一次只能对一列进行排序。但是,如果排序列的两个元素相等,您可以返回到另一个第二列……顺便说一句,
“我太懒了”
这个词从来都不会被很好地理解。我已经做了相当多的编码,我知道没有现有的代码(例如,各种统计模型的MCMC采样器扩展了最新技术。)我宁愿懒惰,而不是重新发明轮子,尤其是在我相信应该有东西存在的地区。1)什么顺序?对每个collumn单独排序?按行排序?按collumn排序?2)小规模是固定的还是指针数组?好的程序员是懒惰的程序员:)这应该行得通。我知道qsort和std::sort,但从未想过将compare函数扩展到超过1列。我将实现它,如果它对我有效,我将接受你的答案。感谢你的快速回复。你也可以使用std::stable_sort-只需重复排序数组,从最不重要的列开始。这一个是完美答案!!谢谢@michael aaron safyanNick的解决方案很好,因为它可以推广到更高的维度!想象一下为两列以上的列编写比较运算符,它会很快变得复杂