如何在比较函数中找到m1和m2相对于m数组的位置?例如:
0 1 2 3 4 5
m array: - - - - - -
^ ^
m1 m2
输出:1和4
避免使用额外的内存非常重要,例如在Mir struct(int pos)中有一个额外的参数。同样慢的解决方案也不受欢迎,比如find()等。请记住,m数组将不断改组(不确定这是否重要)。基本上我需要一个快速和低内存使用的解决方案。这一定很简单..代码:
#include <stdio.h>
#include <stdlib.h>
#include <algorithm>
struct Mir { int a,b; };
Mir *m;
bool cmp(Mir &m1, Mir &m2){
if(m1.b > m2.b){
// Find position of m1 and m2 relative to m array. How ???;
return true;
}
return false;
}
int main(){
int n, k;
scanf("%d %d", &n, &k);
m = (Mir *) malloc(n * sizeof(Mir));
for(int i = 0; i < n; i++)
scanf("%d %d", &m[i].a, &m[i].b);
std::sort(m, m+k, cmp);
}
感谢。