2011-10-18 3 views
1

어떻게 총 주문을 정의 하시겠습니까? 예를 들어 총 주문이나 모양 등을 정의해야하는 경우 어떻게해야할까요?총 주문 정의

편집 : 구체적으로 좌표 (x, y, z)가있는 객체를 기반으로 총 주문을 정의 하시겠습니까? 각 객체가 독특하고 정렬 가능하도록 정렬하는 방법을 이해할 수 없습니다.

+0

죄송합니다. 매우 모호합니다. – rmp2150

답변

1

2D 또는 3D 개체에 "자연적인"순서는 없습니다. 이것은 물론, 객체가 고유하게 좌표로 식별되는 가정

// returns -1 if o1<o2, 1 if o1>o2, 0 if o1==o2 
int Compare(MyObject o1 ,MyObject o2) 
{ 
    if(o1.x>o2.x) return 1; 
    if(o1.x<o2.x) return -1; 
    if(o1.y>o2.y) return 1; 
    if(o1.y<o2.y) return -1; 
    if(o1.z>o2.z) return 1; 
    if(o1.z<o2.z) return -1; 
    return 0; 
} 

그러나, 당신이 순서를 유도하려는 경우, 당신은 예를 들어, 자신의 좌표로이 방법을 비교할 수 있습니다.

이 정렬을 통해 이러한 개체를 정렬하고 비교할 수 있습니다. 자신이 대답해야하는 질문은 문제로 해결하고자하는 문제에 도움이되는지 여부입니다. 일반적으로 세트의 특정 요소뿐만 아니라 주어진 범위의 모든 요소를 ​​원할 때 특히 1D 세트의 순서는 조회를 빠르게 수행하는 데 사용됩니다.

2D 또는 3D 세트의 경우 주어진 사각형 또는 큐브 내의 모든 요소 세트를 찾는 것과 비슷한 질문이 있습니다. 그 목적을 위해, 위의 명령은 당신을 아주 잘 지원하지 않습니다. 2D quadtree 또는 3D octree과 같은 데이터 구조가이 작업을 훨씬 잘 지원합니다.

+0

지연에 대해 사과드립니다. 하지만 고마워요. – rmp2150