获取c ++ sort

时间:2015-10-12 00:10:29

标签: c++ sorting indices

如何在比较函数中找到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);
}

感谢。

0 个答案:

没有答案