비슷한 필드가 많은 개체간에 엄격한 정렬을 어떻게 제공합니까? 여러 필드와 비교할 때 엄격한 순서 지정
는 3 개 필드 (A, B, C)bool less(x, y)
return x.a < y.a || x.b < y.b || x.c < y.c
좋은 두 객체 x
과 비교해야 y
각을 가정,하지만이 약한 순서를 제공합니다. x.a < y.a 및 y.b < x.b 인 경우 less(x,y)
이 참일 경우 less(y, x)
도 true입니다.
나는
bool less(x, y)
return x.a < y.a || (x.a == y.a && x.b < y.b)
를 작성하는 데 사용하고 있지만, 관련 분야의 수가 증가하면 매우 추한 것으로 시작합니다.
bool less(x, y)
return x.a < y.a ||
(x.a == y.a && x.b < y.b) ||
(x.a == y.a && x.b == y.b && x.c < y.c) ||
(x.a == y.a && x.b == y.b && x.c == y.c && x.d < y.d);
누가 더 나은 알고리즘을 갖고 있습니까?
나는 당신이 무엇이 가장 중요한 분야이고, 무엇이 덜한지를 정의 할 필요가 있다고 생각한다. 주문 (나는 생각한다)은 정확하게 결정되어야한다. 기본적으로 어떤 자산을 먼저 확인합니까? 두 번째 것은 무엇이고 세 번째는 무엇입니까? –
나는 그것을하고 싶지만 문제의 본질 때문에 비교 *는 각 필드를 어떤 식 으로든 고려해야한다. – UmNyobe
또 다른 옵션은 3 개 (또는 4 개 또는 10 개)의 계산을 수행하는 함수를 만드는 것이다. 당신에게 하나의 값을주고 * 당신이 비교하는 속성입니다. 'val_to_compare = 1 * a + 10 * b + 23 * c'와 같은 것입니다. 이렇게하면 속성에 가중치를 첨부 할 수 있습니다. –