【发布时间】:2019-11-09 19:17:55
【问题描述】:
我已经使类具有二维数组 (4 x 4) 和二维数组中的最大值,如下所示:
class B {
public:
int shape[4][4] = { 0 };
int maxh = 0;
B() {};
void record(int module[4][4]) {
for (int i = 0; i < 4; i++) {
for (int j = 0; j < 4; j++) {
shape[i][j] = module[i][j];
if (shape[i][j] > maxh) { maxh = shape[i][j]; }
}
}
}
};
如果有一个类'B'数组,
B b_arr = new B[30000];
如何按最大值对类对象数组进行排序?
我尝试像下面的代码那样对数组进行排序,但出现堆栈溢出错误。
int partition(B arr[], int p, int r) {
int i = p - 1;
for (int j = p; j < r; j++) {
int cri = arr[r].maxh;
if (arr[j].maxh < cri) {
i++;
B tmp = arr[i];
arr[i] = arr[j];
arr[j] = tmp;
}
}
B tmp = arr[i + 1];
arr[i + 1] = arr[r];
arr[r] = tmp;
return i + 1;
}
void quickSort(B arr[], int p, int r) {
if (p < r) {
int q = partition(arr, p, r);
quickSort(arr, p, q - 1);
quickSort(arr, q + 1, r);
}
}
【问题讨论】:
-
你为什么不使用 std::sort ?
标签: c++