2013-08-12 1 views
-2

점 배열 (점 [])이 있습니다. 배열 안의 모든 점의 Y 값은 같습니다.배열 점에서 특정 점 선택

예를 들어

4 점 :

(12 : 27) 
(13 : 27) 
(27 : 27) 
(28 : 27) 

나는 X 축에 가장 큰 차이점이 배열에서 포인트를 획득해야합니다. 이 예에서

그 점은 다음과 같습니다

(12 : 27), (28 : 27) 내가 배열 확장의 도움으로 그 포인트를 얻을 수있는 방법

, 어떻게 내가 람다를 쓸 수 있습니다 표현?

Point[] points = Array.Find(arrPoints,"Lambda expression"); 

또는

Point[] points = arrPoints.Select("Lambda expression"); 

+6

귀하의 질문은 명확하지 않습니다. (12보다 27이 더 큽니까?)하지만 arrayPoints.Min (x => xX) 및 Max (x => xX) ' – Sayse

+1

"을 원한다고 생각합니다. 이 배열은 X 축에서 가장 큰 차이가 있습니다. * "- 잘못하면 바로 잡으 시겠지만 ** 항상 ** 최대량이됩니다 **. – JDB

답변

0
Array.Sort(points, (p1, p2) => p1.X.CompareTo(p2.X)); 
return new[] { points[0], points[points.Length-1] }; 

주 (내가) ((만 찾기 ONT 어떤 확장 방법을 사용) 또는 선택 가능) - 첫 번째는 현재 위치에서 정렬 할 수행 배열은 그 순서가 영구적으로 변경된다는 것을 의미합니다.

대신 수행 할 수 있습니다

var pDash = points.OrderBy(p => p.X).ToArray(); 
return new[] { pDash[0], pDash[pDash.Length-1] }; 

는 개인적으로 내가 처음 선호가 두 번 메모리 사용을 포함하지 않기 때문에.

Array.Sort은 안정된 정렬이 아니기 때문에 항상 바람직하지는 않습니다. 그러나이 경우에는 최악의 경우는 두 개의 동일한 점이 스왑되어지기 때문에 중요하지 않습니다.하지만 여전히 동일한 점을 나타냅니다. 공간이므로 문제가되지 않아야합니다.

+0

최소 및 최대 값을 얻기 위해 전체 데이터 세트를 정렬 할 필요가 없습니다. – Servy

+0

물론 - Min() 및 Max() 대신 –

+0

을 사용할 수 있습니다. 그렇게하면 성능이 향상되고 명확하게 의미 상으로는 무엇을 하려는지 나타납니다. – Servy

관련 문제