2013-12-23 1 views
1

어떻게 배열 Y. 여기다시 주문 배열

에 해당하는 값의 크기에 따라, 나는 배열 X를-배열을 다시 할 것은 내가 의사 코드에서 의미있는 작업은 다음과 같습니다

Array X = Red, Yellow, Green, Blue 

Array Y = 68.4, 42.3, 53.6, 69.3 (random positive doubles) 

내가 출력을 원하는 중 :

Array Z = Blue, Red, Green, Yellow 

즉이 크기별로 배열 Y 요소 순위 (그래서이 69.4로 진행, 68.3, 53.6, 42.3)을하고 적용 어레이 X의 요소에 동일한 재정렬, 청색, 적색, 녹색, 황색으로 주문하십시오

지금까지의 시도는 요소를 추가하고 list.sort 메서드를 사용하여 순서를 바꾸는 목록을 작성하는 것이지만 필요한 논리를 따라 잡을 수 없기 때문에 정직하게 처리해야합니다.

편집 - 사용 복식 대신의 int

+2

, 아마도 당신이 함께 저장해야합니다. 그들이 관련이 없다면, 그들 사이에지도를 설정해야합니다. 그런 다음 하나의 콜렉션을 정렬하고이를 통해 반복하고 다른 콜렉션의 요소를 찾아 볼 수 있습니다. –

답변

4

이에 대한 구체적 Array.Sort의 과부하가있다.

그냥 사용

Array.Sort(Y, X); 

당신이 할 수있는 동안, 당신이 다음 Colorint 값 모두를 가지고, 일부 복합 항목의 단일 배열을 만들 것을 제안 강하게 것이라고 말해 두 겠는데 각 배열의 색인이 "무언가"의 한 구성 요소에 해당하는 두 개의 다른 배열을 갖는 것이 아니라 int를 기반으로 정렬합니다. 더 쉽게 처리 할 수 ​​있습니다.

+0

+1 너무 잘 작동합니다. 나는이 과부하에 대해 몰랐습니다. 감사! –

+1

그는 또한 Y를 뒤집을 필요가 있습니다. –

+0

@ Pierre-LucPineault 그것은 내림차순으로 정렬하는 비교자를 제공하거나 제공합니다. – Servy

0

이 5 월 도움 :

List<Tuple<string, int>> values = new List<Tuple<string, int>>(); 
values.Add(new Tuple<string, int>("Red", 68)); 
values.Add(new Tuple<string, int>("Yellow", 42)); 
values.Add(new Tuple<string, int>("Green", 53)); 

var sortedValues = values.OrderByDescending(i => i.Item2).ToList(); 
0

당신이 더 나은 결과를 얻을 것이다 키 - 값 쌍의 목록을 사용하여 다음 수 단순히 정렬 값과 출력 키의 배열 또는 목록에 의해. 이 문서의 Compare2 방법 같은

뭔가 당신이 찾고있는 무엇 :이 값이 관련된 경우 http://www.dotnetperls.com/sort-keyvaluepair

1
List<string> colors = new List<string>() { "Red", "Yellow", "Green", "Blue" }; 
List<double> order = new List<double>() { 68.4, 42.3, 53.6, 69.3 }; 

var newList = order.Select((item, inx) => new { item, inx }) 
       .OrderByDescending(x => x.item) 
       .Select(x => colors[x.inx]) 
       .ToList(); 
+0

ToArray()에 대한 마지막 ToList() 호출과 내 투표가 있습니다 ... OP는 그 끝에 배열을 요청했습니다. – War